Autor Beitrag
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Di 01.01.13 18:19 
Ich habe einen Barcodescanner, den ich in einem Programm parallel zur Tastatur nutzen möchte.
Idee war einfach:
1) Scanner schickt Startzeichen --> Unterdrücke diese Eingabe und setze Status auf "Lesen"
2) Tastaturevent --> wenn Status="Lesen" dann speichere Zeichen und unterdrücke Eingabe
3) Scanner schickt Startzeichen --> Unterdrücke diese Eingabe, setze Status auf "Normal" und aktiviere "OnBarCode"

Das ganze habe ich bisher über eine neue TForm-Klasse gemacht, die mit KeyPreview=true und den OnKeyxxx Methoden arbeitet und dabei immer Key:=0 setzt (wenn Status usw...)
Dummerweise kann ich darüber die Eingabetaste und auch Buchstaben, die als Hotkeys für Buttons fungieren nicht unterdrücken.
Dann habe ich gedacht, ich könnte das als Tastaturhook machen.
Ähnlich zu www.entwickler-ecke....Problem_27431,0.html

Testweise habe ich folgendes:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
SetWindowsHookEx(WH_KEYBOARD, KBProc, 0, GetCurrentThreadId());
//...
function KBProc(nCode: Integer;wParam: wParam;lParam: lParam): LRESULT;stdcall;
begin
    frmSettings.mCodes.Lines.Add(inttostr(wParam) + ' ' + inttohex(lParam, 8));
    Result:=0;
end;


Der sollte mir damit also alles abfangen und die Taste dann unterdrücken, da es nicht weitergereicht wird. Macht er aber nicht. Die Taste geht immer noch bis zum Programm durch.
Wie kann ich also alle Tasten unterdrücken?


Edit: Hat sich geklärt: Ein Result:=1 löst das Problem ;)
MeierZwoo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 94
Erhaltene Danke: 11

Win 7, DOS5
Delphi 2007 Architect, BP7/TP5, LISP, PS
BeitragVerfasst: Mi 02.01.13 16:32 
user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:
Edit: Hat sich geklärt: Ein Result:=1 löst das Problem ;)


Weil ein Result=0 beim ersten Lesen das Kennzeichen für vorliegende Sonder-/nicht-alfanumerische-Tasten ist und zu einem zweiten Lesen führt ... und dann alle diese Eingaben zurückliefert
:)