cmddatei
Goto Top

In Batch einen Tastendruck erfassen

Eine kleine frage vom Anfänger in die runde,
gibt es einen Bedingung oder eine Umgebungsvariabele die mit der ich Bestimmen kann ob eine taste z.B. die Leertaste aktuell gedrückt ist ohne set /p oder solches?
Freue mich auf hilfreiche Antworten...

Content-ID: 284766

Url: https://administrator.de/contentid/284766

Ausgedruckt am: 25.11.2024 um 12:11 Uhr

Snowman25
Snowman25 06.10.2015, aktualisiert am 07.10.2015 um 10:45:06 Uhr
Goto Top
Hallo @cmdDatei,

nein. (Also nicht in Batch, aber in VB, wie weiter unten erklärt)

Gruß,
@Snowman25
cmdDatei
cmdDatei 06.10.2015 um 19:35:17 Uhr
Goto Top
Gibt es den ein Programm das im gleichen Verzeichnis bzw. Im Systen Verzeichnis seien muss mit der so etwas möglich ist?
122990
Lösung 122990 06.10.2015 aktualisiert um 20:37:00 Uhr
Goto Top
Stichwort: Keylogger
https://www.youtube.com/watch?v=TIvfZVg2CiU

Gruß grexit
colinardo
Lösung colinardo 06.10.2015 aktualisiert um 20:36:54 Uhr
Goto Top
Moin zusammen,
kann man sich wie @122990 verlinkt hat schnell selbst z.B. mit VB.Net als ConsoleApp schreiben:
Gibt True (ExitCode 0) aus wenn die Leertaste gedrückt ist, ansonsten False (ExitCode 1).
Imports System.Runtime.InteropServices

Module Module1
    <DllImport("user32.dll")> _  
    Function GetAsyncKeyState(ByVal vKey As Short) As Short
    End Function

    Sub Main(ByVal args() As String)

        If args.Length = 1 Then
            Try
                Dim keystate As Boolean = isKeyPressed(CShort(args(0)))
                Console.WriteLine(keystate.ToString())
                Environment.Exit(IIf(keystate, 0, 1))
            Catch ex As Exception
                Console.WriteLine(ex.Message)
                Environment.Exit(255)
            End Try
        Else
            Console.WriteLine("Fehler: Kein KeyCode übergeben!")  
            Environment.Exit(255)
        End If

    End Sub

    Function isKeyPressed(nKey As Short) As Boolean
        Return IIf(GetAsyncKeyState(nKey) <> 0, True, False)
    End Function
End Module
Lässt sich dann z.B. so in einer Batch verwenden:
keycheck.exe 32 >nul && echo Leertaste ist gedrueckt || echo Leertaste ist nicht gedrückt
Die virtuellen KeyCodes findest du hier in HEX, einfach nach Dezimal umrechnen:
https://msdn.microsoft.com/de-de/library/windows/desktop/dd375731%28v=vs ...

Grüße Uwe
cmdDatei
cmdDatei 06.10.2015 um 20:37:54 Uhr
Goto Top
Danke für die schnelle Hilfe
Tobias
kaiand1
kaiand1 07.10.2015 um 17:21:16 Uhr
Goto Top
Mit AutoIT währe dies auch möglich.
https://www.autoitscript.com/site/autoit/
Snowman25
Snowman25 08.10.2015 um 13:44:49 Uhr
Goto Top
Zitat von @kaiand1:

Mit AutoIT währe dies auch möglich.
https://www.autoitscript.com/site/autoit/

Dann nimmt man aber lieber AutoHotkey, weil das wesentlich Nutzer-freundlicher ist (und aktueller): http://www.ahkscript.org/
cmdDatei
cmdDatei 20.10.2015 um 13:39:55 Uhr
Goto Top
Als ich endlich dazu gekommen bin es auszuprobieren hab ich mich gefragt wo der KeyCode hingehört
colinardo
colinardo 20.10.2015 aktualisiert um 22:45:24 Uhr
Goto Top
Zitat von @cmdDatei:

Als ich endlich dazu gekommen bin es auszuprobieren hab ich mich gefragt wo der KeyCode hingehört
Erster Parameter face-wink hatte ich doch drunter ein Beispiel geschrieben ...