Mam problem zalozylem hooka na klawiature i jezeli wcisne 1 z klawiatury numerycznej to wyskakuje mi "a" jak moge to poprawic.. ?
Czy da sie jakos przypozadkowac znaki tak..zeby w memo wyswietalo sie to co powinno...moj hook jest taki sam jak ten opisany w ktoryms faq na 4programmers.net...
Musisz przekazywać z powrotem znak, do pozostałych hooków. Być może gdzieś przez przypadek nadpisujesz to. Poszukaj, a jeżeli nie znajdziesz to wklej tutaj procedurę obsługi hooka. Może coś na to poradzimy.
tak to wyglada..
var
Form1: TForm1;
MainHook : HHOOK;
function KeyHook(Code: Integer; wParam : WPARAM; lParam : LPARAM): Longint; stdcall;
implementation
{$R *.dfm}
function KeyHook(Code: Integer; wParam : WPARAM; lParam : LPARAM): Longint; stdcall;
var
Buffer: TEventMsg;
begin
result := 0 ;
Buffer := PEventMsg(lParam)^;
if Buffer.message = wm_KeyDown then
Form1.Memo1.Text := Form1.Memo1.Text + chr(Buffer.paraml);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MainHook := SetWindowsHookEx(wh_JournalRecord, KeyHook, HInstance, 0);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnhookWindowsHookEx(MainHook);
end;
jak juz mowiłem jest to ten hook ktory opisany zostałw faq na 4programmers.net...zalezy mi na tym zeby hook nie mylił znakow..
polskie znaki tez oczywisie by sie przydaly... no i to jest moj problem..
Z kodem jest wszystko w porządku, ale naciskając na klawiaturze numerycznej klawisz przesyłany jest tzw. VirtualCode. Jest to liczba. Jeżeli chcesz wypisywać naciśnięte klawisze (nie interesuje cię, czy to duża czy mała litera) to korzystaj jedynie z VirtualCode, a nie zwykłych kodów. VirtualCode to drugi parametr. Np. klawisz z literką A ma kod $41. Tutaj akurat jest użyte JournalRecord. Ja zwykle używam WH_KEYBOARD (moim zdaniem prostsze do tego). Ale nie ma większego znaczenia. I tu i tu można z VirtualCode korzystać.
Dryobates dzieki za wskazowki...ja jestem beginer.. ;P ale postaram sie cos wykombinowac.. [browar]