Hallo Gemeinde,
ich drehe gerade total durch und raste aus = Ich brauche Hilfe:
Ich muss ein Programm entwickeln, zur Erfassung von HW-Entnahmen aus dem Labor. Damit der Entleiher identifiziert werden kann, lese ich mittels RFID-Leser dessen Betriebsausweis aus.
das mache ich mit folgendem Konstrukt(Stark gekürzt damit das keiner missbrauchen kann )
Code
Global $g_sBuffer = ""
Global $g_hStub_KeyProc = DllCallbackRegister('_KeyProc', 'long', 'int;wparam;lparam')
Global $hmod = _WinAPI_GetModuleHandle(0)
Global $g_hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($g_hStub_KeyProc), $hmod)
...
Func _KeyProc($nCode, $wParam, $lParam)
Local $tKEYHOOKS
$tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
Tooltip($nCode)
If $nCode < 0 Then
Return _WinAPI_CallNextHookEx($g_hHook, $nCode, $wParam, $lParam)
EndIf
If $wParam = $WM_KEYDOWN Then
EvaluateKey(DllStructGetData($tKEYHOOKS, "vkCode"))
EndIf
Return _WinAPI_CallNextHookEx($g_hHook, $nCode, $wParam, $lParam)
EndFunc ;==>_KeyProc
Func EvaluateKey($iKeycode)
If (($iKeycode > 64) And ($iKeycode < 91)) _ ; a - z
Or (($iKeycode > 96) And ($iKeycode < 123)) _ ; A - Z
Or (($iKeycode > 47) And ($iKeycode < 58)) Then ; 0 - 9
$g_sBuffer &= Chr($iKeycode)
Switch $g_sBuffer
Case $g_sBuffer <> ""
$sAusweisNr &= $g_sBuffer
$g_sBuffer = ''
Global $iLength = StringLen($sAusweisNr)
If $iLength = 6 Then
GuiCtrlSetData($idCode, $sAusweisNr)
$g_hStub_KeyProc = 0
OnAutoitExit()
ADLogin()
Endif
EndSwitch
Else
$g_sBuffer = ""
EndIf
EndFunc ;==>EvaluateKey
Alles anzeigen
Der von mir auszulesende String ist 6 Zeichen lang(nur Zahlen). Wenn das 6. Zeichen erfasst ist, breche ich den Lesevorgang ab(aufruf Func OnAutoitExit) und rufe dann die nächste func(AdLogin) auf.
Das Problem: Die "Leseroutine" schreibt mir die letzte Ziffer immer in das in der Func ADLogin sich öffnende Input-Feld.
WIE KANN ICH DAS VERHINDERN