Hook-Funktion zum Einlesen eines RFID-Scanners in Autoit
Hallo Gemeinde,
ich habe ein HW-Buchungssystem in Autoit geschrieben. Damit habe ich aber ein erhebliches Problem:
Zur Authentisierung eines Buchungsvorganges muss der User seinen Betriebsausweis auf den genannten RFID Scanner(Emulation Tastatureingabe) legen. Dadurch wird die 6-stellige Ausweisnummer ausgelesen. Hierzu habe ich eine Hook-Funktion erstellt. Das Problem: Die Hook-Funktion funktioniert nur einmal nach dem Programm-Start.
Wenn der Buchungsvorgang abgeschlossen ist und ich Quasi an den Anfang zurückkehre, lässt sich die Ausweisnummer nicht mehr einlesen.
Wie kann ich die Hook-Funktion quasi on demand starten(ein Aufruf der Funktion zur Laufzeit geht jedenfalls nicht!)?
Beim Programm-Start wird die Func _initKeyHook ausgeführt die die Hookprozedur initiiert.
Das Kuriose an der Sache: Der Vorgang (Ausweis einlesen - Buchen - Ausweis erneut einlesen -Buchen, etc.) hat Anfangs super funktioniert.
Ohne i-welche Änderungen am Code(kompilierte Exe) geht der Vorgang auf einmal egal auf welchem Rechner ich die Exe ausführe nicht mehr.
Ich vermute Änderung im Handling mit Hooks in Windows 10...
Beim weiteren Versuch eine Ausweisnummer einzulesen kommt nur noch ein Plong vom OS...
ich habe ein HW-Buchungssystem in Autoit geschrieben. Damit habe ich aber ein erhebliches Problem:
Zur Authentisierung eines Buchungsvorganges muss der User seinen Betriebsausweis auf den genannten RFID Scanner(Emulation Tastatureingabe) legen. Dadurch wird die 6-stellige Ausweisnummer ausgelesen. Hierzu habe ich eine Hook-Funktion erstellt. Das Problem: Die Hook-Funktion funktioniert nur einmal nach dem Programm-Start.
Wenn der Buchungsvorgang abgeschlossen ist und ich Quasi an den Anfang zurückkehre, lässt sich die Ausweisnummer nicht mehr einlesen.
Wie kann ich die Hook-Funktion quasi on demand starten(ein Aufruf der Funktion zur Laufzeit geht jedenfalls nicht!)?
Beim Programm-Start wird die Func _initKeyHook ausgeführt die die Hookprozedur initiiert.
Func _InitKeyHook()
ConsoleWrite('_InitKeyHook Start' & " " & _Counter() & @CRLF)
If $g_hStub_KeyProc = Null Then
$g_hStub_KeyProc = DllCallbackRegister('_KeyProc', 'long', 'int;wparam;lparam')
Local $hmod = _WinAPI_GetModuleHandle(0)
$g_hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($g_hStub_KeyProc), $hmod)
EndIf
ConsoleWrite('_InitKeyHook End' & " " & _Counter() & @CRLF)
EndFunc ;==>_InitKeyHook
Das Kuriose an der Sache: Der Vorgang (Ausweis einlesen - Buchen - Ausweis erneut einlesen -Buchen, etc.) hat Anfangs super funktioniert.
Ohne i-welche Änderungen am Code(kompilierte Exe) geht der Vorgang auf einmal egal auf welchem Rechner ich die Exe ausführe nicht mehr.
Ich vermute Änderung im Handling mit Hooks in Windows 10...
Beim weiteren Versuch eine Ausweisnummer einzulesen kommt nur noch ein Plong vom OS...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3855389432
Url: https://administrator.de/contentid/3855389432
Ausgedruckt am: 25.11.2024 um 09:11 Uhr
2 Kommentare
Neuester Kommentar
Moin.
Deine Callback Prozedur die auf das Event reagiert fehlt hier leider ...
Würde dazu mal folgendes lesen und mit allem bei dir angewendetem abgleichen.
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legac ...
Cheers
certguy
Deine Callback Prozedur die auf das Event reagiert fehlt hier leider ...
Würde dazu mal folgendes lesen und mit allem bei dir angewendetem abgleichen.
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legac ...
Cheers
certguy