Miten saan tietoon minkä tekstin käyttäjä on valinnut esim. selaimessa, wordissa, muistiossa, textboxissa tai labelissa?
Mitä APIa tähän voisi käyttää?
EDIT: Tuli muuten mieleen aika helppo tapa:
1. Ohjelma laittaa muistiin leikepöydän sisällön
2. Ohjelma painaa Ctrl+C ja leikepyödälle kopioituu valittu teksti
3. Ohjelma katsoo leikepöydän sisällöstä tekstin
4. Ohjelma asettaa leikepöydän vanhan sisällön takaisin
Sanokaa ihmeessä jos keksitte järkevän tavan!
Tässä jotenkin toimiva koodi (jouduin lisäämään odotuksen näppäinpainalluksien välissä, koska firefox ei ainakaan pysynyt perässä):
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Declare Function timeGetTime Lib "winmm.dll" () As Long Private Const KEYEVENTF_EXTENDEDKEY As Long = &H1 Private Const KEYEVENTF_KEYUP As Long = &H2 Private Const VK_CTRL = 17 Private Const VK_C = &H43 Public Sub Wait(ByVal ms As Long) ms = timeGetTime() + ms Do: DoEvents: Loop While ms > timeGetTime() End Sub Private Sub hotkey_HotkeyPressed() hotkey.Enabled = False On Error Resume Next Dim backup As String backup = Clipboard.GetText On Error GoTo err keybd_event VK_CTRL, 0, 0, 0 DoEvents Wait 50 keybd_event VK_C, 0, 0, 0 DoEvents Wait 50 keybd_event VK_C, 0, KEYEVENTF_KEYUP, 0 DoEvents Wait 50 keybd_event VK_CTRL, 0, KEYEVENTF_KEYUP, 0 Wait 50 MsgBox Clipboard.GetText On Error Resume Next Clipboard.SetText backup hotkey.Enabled = True Exit Sub err: MsgBox "Error: " & Error, vbCritical hotkey.Enabled = True End Sub
Korjailkaa ihmeessä :P!
Aihe on jo aika vanha, joten et voi enää vastata siihen.