Ich habe ein Problem und bin auch nicht im englishen Forum zu dem Problem fündig geworden.
Ich habe eine USB Tastertur und ein USB BarcodeScanner
Im englischen Forum habe ich RawInput gefunden und kann damit den Scanner auch wunderbar auslesen.
Mein problem liegt dadrin das ich die Tastertur dann nicht mehr verwenden kann da diese ebenfalls geblockt wird und die Daten der Tastertur auch durch die OnInput funktion geschoben wird.
Ich bräuchte allerdings nur den Barcodescanner durch die Funktion..
Tastertur soll weiter hin normal Funktionieren.
Kleines Test Script
Spoiler anzeigen
#include <RawInput.au3>
HotKeySet('{ESC}', '_EXIT')
[/autoit] [autoit][/autoit] [autoit]Global $tRID_KD, $pRID_KD, $iRID_KD
Global $tRIH, $iRIH
Global $iNumDevices
Global $hGUI
$hGUI = GUICreate('Test', 200, 200)
GUICtrlCreateInput("", 10, 10, 121, 21)
GUIRegisterMsg($WM_INPUT, 'OnInput')
[/autoit] [autoit][/autoit] [autoit]GUISetState(@SW_SHOW)
$tRID_KD = DllStructCreate($tagRAWINPUTDEVICE)
$pRID_KD = DllStructGetPtr($tRID_KD)
$iRID_KD = DllStructGetSize($tRID_KD)
$tRIH = DllStructCreate($tagRAWINPUTHEADER)
$iRIH = DllStructGetSize($tRIH)
$iNumDevices = 1
DllStructSetData($tRID_KD, 'usUsagePage', 0x01)
DllStructSetData($tRID_KD, 'usUsage', 0x06) ; 0x01
DllStructSetData($tRID_KD, 'dwFlags', BitOR($RIDEV_NOLEGACY, $RIDEV_INPUTSINK))
DllStructSetData($tRID_KD, 'hwndTarget', $hGUI)
_RegisterRawInputDevices($pRID_KD, $iNumDevices, $iRID_KD)
While 1
Sleep(20)
WEnd
Func OnInput($hwnd, $iMsg, $iwParam, $ilParam)
Local $tRI_KD, $pRI_KD, $iRI_KB
Local $iSize
$tRI_KD = DllStructCreate($tagRAWINPUT_KEYBOARD)
$pRI_KD = DllStructGetPtr($tRI_KD)
$iRI_KB = DllStructGetSize($tRI_KD)
_GetRawInputData($ilParam, $RID_INPUT, $pRI_KD, $iRI_KB, $iRIH)
If Not @error Then
if DllStructGetData($tRI_KD, 'Message') = 257 Then
;~ ConsoleWrite(DllStructGetData($tRI_KD, 'Message') & @LF)
;~ ConsoleWrite(DllStructGetData($tRI_KD, 'hDevice') & @CR)
ConsoleWrite(DllStructGetData($tRI_KD, 'hDevice') &" -> Num "&DllStructGetData($tRI_KD, 'VKey')&" Key"& Chr(DllStructGetData($tRI_KD, 'VKey')) & @LF)
EndIf
EndIf
$tRI_KD = 0
Return 'GUI_RUNDEFMSG'
EndFunc
Func _EXIT()
GUIDelete()
Exit
EndFunc
wenn ich
[autoit]DllStructSetData($tRID_KD, 'dwFlags', BitOR($RIDEV_NOLEGACY, $RIDEV_INPUTSINK))
[/autoit]
zu
DllStructSetData($tRID_KD, 'dwFlags', $RIDEV_INPUTSINK)
[/autoit]mach krieg ich alle angaben kann auch filtern
aber leider schreibt er mir dann auch vom barcodescanner die daten isn gui.
vllt hat da jemand eien Idee