Windows-weit Key abfangen und dann Keys senden

… 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)?

SendKeys sollte aber funktionieren, oder?

schau mal nach Sources von KEYLOGGERn in Visual Basic… die
funktionieren ähnlich (nur dass die halt nur Tasten abfangen),
sollte ein guter Ansatz sein.

Alex

Hi,

willst Du selber programmieren ?

Wenn nicht, schau Dir das an:

GhostTyperXML
www.sc-data.de

Die Private/Home Version ist Freeware.

Gruß Andreas

Hallo Tino,

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.

Gruß, Rainer