Ultraglobales Keypress Ereignis /VB6/

plague1000

Grünschnabel
Servus euch allen !

Bis jetzt konnt ich all meine Fragen mit der Suchmaschine erledigen, respekt, aber nun scheint es an der Zeit sich endlich anzumelden.
Ich hab grad ein Projekt am Start, bei dem das Programm im Hintergrund laufen, alle Tastenanschläge abhorchen und beim Erkennen einer vorher bestimmten Taste einen Code abspielen soll.
Das Programm läuft dabei minimiert.
Quasi wie a KeyPreview, bloß auf das komplette System, statt auf nur eine Form bezogen. Es soll also dabei, wie bei einem Keylogger kein Fokus auf das Programm bestehen müssen.
Mit VB6 Bordmitteln wird das wahrscheinlich nicht klappen, aber vielleicht kennt sich ja jemand von euch mit einem entsprechenden API Befehl, Hooks oder so was aus.
Bunka hat mal das für .NET gepostet:
Code:
Private Declare Function GetAsyncKeyState Lib _
"user32.dll" (ByVal nVirtKey As Integer) As Short

   Sub Main()
        Do Until a = 1
            If GetAsyncKeyState(Asc("B")) = -32767 Then
                MsgBox("test")
            End If
        Loop
    End Sub
Ist das übertragbar ? Wenn ja wie ?
Bitte weist mich zurecht, wenn ich was übersehen haben sollte.

Servus, vielen Dank und gute Nacht !
 
Ist im Prinzip fast gleich, nur die Deklaration ist geringfügig anders (VB.NET hat etwas andere Datentypen). Würde in VB6 so aussehen:
Visual Basic:
Private Declare Function GetAsyncKeyState Lib "user32" _
        (ByVal vKey As Long) As Integer

   Sub Main()
        Do
            If GetAsyncKeyState(Asc("B")) = -32767 Then
                MsgBox "Taste B gedrückt!"
            End If
            DoEvents
        Loop Until GetAsyncKeyState(Asc("B")) = -32767
    End Sub

Schau dir dazu auch das hier an.


Der Doc!
 
ja, vielen Dank euch beiden.
Ich hab nun auch das hier gefunden:
vbarchiv
Damit funktioniert das schonmal, nur scheitert da meine variable Hotkey-Einstellung.
Es geht halt nur mit F11 und Strg+F12. Bekomm nach dem Überarbeiten einen Absturz.
Ist wohl noch zu hoch für mich.
So nebenbei:
Ich wollte das komplette System für eine kurze Zeit muten, aber jeder Code, den ich gefunden hab, läuft nur unter meinem XP. Vista ignoriert das ganze. Kann es sein, dass sich da die Funktionsweise geändert hat ?
 
naja, ich habe mir gedacht, man könnte ja eine Taste drücken lassen, den Code abfragen, speichern und da wieder verwenden als Hotkey, aber immerhin klappt das jetzt so.
Und bis jetzt lös ich das SoundProblem mit einem ausgelagerten Third Party Programm, das ich mit der Shell aufrufe. Nicht elegant, aber jetzt kann ich's wenigstens mal privat benutzen.
 
Vista ist tatsächlich anders, schon mal von den Benutzerrechten her. Kann sein, dass da was geblockt wird, was in XP noch möglich war.

Betr deines Tastenproblems, lad deinen Code doch hoch und markier die strittige Stelle, vielleicht ließe sich da was machen.


Der Doc!
 
Zurück