Ehm...
Jak wykryć że wciśnięto dowolny przycisk na kalwiaturze, np "A"
Jak wykryć że został wciśnięty klawisz "end" lub inny np. "Print Screen"
Ehm...
Jak wykryć że wciśnięto dowolny przycisk na kalwiaturze, np "A"
Jak wykryć że został wciśnięty klawisz "end" lub inny np. "Print Screen"
OnKeyDown, OnKeyPress
Sprawdzasz
if Key = 'A' ... // w jednej metodzie Key: Char
if Key = VK_END // w drugiej Key: Word
o coś takiego mi chadzało, wreszcie na tym forum ktoś pracuje :)
a jak wykryć wciśnięcie dowolnego klawisza globalnie nawet wtedy gdy program jest zminimalizowany i na dalszym planie? rodzaj klawisza nie ma znaczenia, wciskam dowolny i rejestruje to zdarzenie, coś w stylu wygaszacza, wciskam klawisz i wygaszacz się wyłącza, tutaj wciskam klawisz GLOBALNIE i mogę podpiąc pod wciśnięcie dowolne zdarzenie, jak to wykonać?
Załóż hooka na klawiaturę.
Poszukaj w necie komponentu np keyspy dla delphi.
Hook jest
procedure TForm1.LockSystem;
begin
HookID := SetWindowsHookEx(WH_KEYBOARD_LL, @LLKeyHookFunc, hInstance, 0);
end;
i jakby ktoś był łaskaw powiedzieć jak obsłużyć naciśnięcie dowolnego (a nie wybranego!) klawisza? globalnie czyli nawet gdy aplikacja jest na drugim planie nieaktywna
DOWOLNEGO GLOBALNIE
wszystkie arty mówią o konkretnym klawiszu
a mnie chodzi o przypisanie zdarzenia kiedy DOWOLNY zostanie wciśnięty
no chyba nie będę zmuszony pisać getkeystate dla kilkudziesięciu klawiszy osobno ?! :| :|
Przyjrzyj się działaniu HOOKa - on obsługuje dowolny klawisz. Sprawdzenia konkretnego klawisza musisz w funkcji dokonać samodzielnie, bo ona zgłasza się dla każdego zdarzenia. Pomyśl też trochę - zakładając HOOK nigdzie nie podajesz dla jakiego klawisza ma się zgłaszać, więc oczywistym jest, że zgłasza się dla dowolnego.
wszystko wek, jakos sobie radze, jak na razie doszedłem do czegoś takiego:
const
WH_JOURNALRECORD = 13; //nr hooka niskiego poziomu. Delphi nie zapewnia tej stałej
function KeyHook(HookCode: Integer; KeyCode: wParam; KStrokeInfo: lParam): LResult; stdcall;
var
Struct: PKbdDllHookStruct; //Wskaźnik do struktury, w której otrzymamy informacje o stanie klawiatury
Buffer: TEventMsg; // deklaracja struktury
begin
Buffer:= PEventMsg(KStrokeInfo)^; // uzyskanie danych poprzez odczytanie wskaznika
Struct:= Ptr(KStrokeInfo);
Result:= 0;
if (Struct.ScanCode> 0) then TranslateKey(Buffer.paramL);
{.............................................}
end;
procedure TranslateKey(Key: Byte);
begin
Chr(Key)
end;
zamienia mi to wciśnięcia klawiszy na jakieś krzaczki wyglądające jak waluta Euro i to mi wystarcza, wiem że którykolwiek z klawiszy został wciśnięty :>
gdyby ktoś potrzebował rozwiązanie problemu to podam
powiedzcie mi gdzie moge zamieścic do ogólnego użytku moje cacko które napisałem? [soczek]
Nie ma takiej potrzeby - gdybyś zajrzał do działu FAQ zobaczyłbyś, że to już tam jest. Z resztą w Rozdziale 5 Kompendium również o tym znajdziesz.
chodzi mi o progs ktory napisalem nie wycinek kodu ;-)
no wiec gdzie moge go zamieścić ?
Myślałem, że wycinek ;)
Jeśli myślisz, że komuś może się przydać, to daj do działu Delphi/Gotowce.