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-Key: 284766

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

Printed on: April 23, 2024 at 18:04 o'clock

Member: Snowman25
Snowman25 Oct 06, 2015, updated at Oct 07, 2015 at 08:45:06 (UTC)
Goto Top
Hallo @cmdDatei,

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

Gruß,
@Snowman25
Member: cmdDatei
cmdDatei Oct 06, 2015 at 17:35:17 (UTC)
Goto Top
Gibt es den ein Programm das im gleichen Verzeichnis bzw. Im Systen Verzeichnis seien muss mit der so etwas möglich ist?
Mitglied: 122990
Solution 122990 Oct 06, 2015 updated at 18:37:00 (UTC)
Goto Top
Stichwort: Keylogger
https://www.youtube.com/watch?v=TIvfZVg2CiU

Gruß grexit
Member: colinardo
Solution colinardo Oct 06, 2015 updated at 18:36:54 (UTC)
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
Member: cmdDatei
cmdDatei Oct 06, 2015 at 18:37:54 (UTC)
Goto Top
Danke für die schnelle Hilfe
Tobias
Member: kaiand1
kaiand1 Oct 07, 2015 at 15:21:16 (UTC)
Goto Top
Mit AutoIT währe dies auch möglich.
https://www.autoitscript.com/site/autoit/
Member: Snowman25
Snowman25 Oct 08, 2015 at 11:44:49 (UTC)
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/
Member: cmdDatei
cmdDatei Oct 20, 2015 at 11:39:55 (UTC)
Goto Top
Als ich endlich dazu gekommen bin es auszuprobieren hab ich mich gefragt wo der KeyCode hingehört
Member: colinardo
colinardo Oct 20, 2015 updated at 20:45:24 (UTC)
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 ...