… blöder Titel, aber besser konnte ich´s jetzt nicht kurzfassen, also:
Hallo erstmal!
Ich brauche ein kleines Tool, mit dem ich unter Windows auf einen zu definierenden Tastendruck warte (z.B. auf das Drücken von F11) - egal welches Fenster aktiv ist (ob´s Word ist oder aber der Cursor gerade in einem Formular im Internet Explorer steht.
Sobald die Taste gedrückt wurde, soll dieses Tool den Tastendruck durch eine zu definierende Zeichenkette ersetzen (z.B. durch „Wie toll, daß es VB gibt“).
Quasi: Ich dürcke F11 und hinter der aktuellen Cursorposition - egal in welchem Programm das gerade ist - erscheint o.a. Text.
Kann man da mit KeyDown arbeiten - der Fokus steht ja nicht im VB-Programm (welches sich natürlich im Hintergrund/Taskleiste verstecken soll)?
schau mal nach Sources von KEYLOGGERn in Visual Basic… die
funktionieren ähnlich (nur dass die halt nur Tasten abfangen),
sollte ein guter Ansatz sein.
füge Deinem Projekt ein Modul hinzu und schreiben folgenden Code 'rein.
Private Declare Function GetAsyncKeyState Lib "user32" ( \_
ByVal vKey As Long) As Integer
Public Function KeyPressed( \_
ByVal Key As KeyCodeConstants, \_
Optional ByVal Wait As Boolean = False \_
) As Boolean
'Status feststellen:
KeyPressed = CBool(GetAsyncKeyState(Key) And &H8000)
'Ggf. auf Loslassen warten:
Wait = Wait And KeyPressed
If Wait Then
Do While CBool(GetAsyncKeyState(Key) And &H8000)
Loop
End If
End Function
In ein Timerelement (Interval habe ich 10 getestet) habe ich geschrieben:
Private Sub Timer1\_Timer()
If KeyPressed(vbKeyF11) Then
SendKeys ("Test ")
KeyPressed vbKeyF11, True
End If
End Sub
Dann wird beim drücken der F11 der Text "TEST " gesendet.