Witam!
Z góry dziękuję, za poświęcenie czasu na ten temat.
Chciałbym aby w moim programie została wywoływana akcja przy przełączaniu okien, po naciśnięciu klawiszy Alt+Tab i przy naciśnięciu przycisku Winkey. Jak to zrobić?
Witam!
Z góry dziękuję, za poświęcenie czasu na ten temat.
Chciałbym aby w moim programie została wywoływana akcja przy przełączaniu okien, po naciśnięciu klawiszy Alt+Tab i przy naciśnięciu przycisku Winkey. Jak to zrobić?
Poczytaj Jak założyć globalnego Hooka niskiego poziomu na klawiaturę
var
Form1: TForm1;
HookID: HHOOK;
type
PKbdDllHookStruct = ^TKbdDllHookStruct;
TKbdDllHookStruct = record
vkCode,
ScanCode,
Flags,
Time,
dwExtraInfo: Integer;
end;
const
WH_KEYBOARD_LL = 13;
{$R *.dfm}
implementation
function LLKeyHookFunc(HookCode: Integer; KeyCode: wParam; KStrokeInfo: lParam): LResult; stdcall;
var
Struct : PKbdDllHookStruct;
begin
Struct := Ptr(KStrokeInfo);
if (HookCode >= 0) then
begin
if (Struct.vkCode = VK_TAB) and (GetAsyncKeyState(VK_MENU)<-32766) then
begin
ShowMessage('Wcisnąłeś Alt+TAB');
end;
end;
Result := CallNextHookEx(HookID, HookCode, KeyCode, KStrokeInfo);
end;
procedure TForm1.LockSystem;
begin
HookID := SetWindowsHookEx(WH_KEYBOARD_LL, @LLKeyHookFunc, hInstance, 0);
end;
procedure TForm1.UnLockSystem;
begin
UnHookWindowsHookEx(HookID);
end;
Znowu za dużo kodu, ale chciałem pomóc - tylko sposób nie jest do konca dobry bo przechwytuje
co chwilę wciśnięcia klawiszy Alt+Tab, moze ktos ma inny pomysł na tozwiązanie to Tobie napisze.
Dzięki wielkie, kod jest ok, ale kiedy w miejscu:
begin
ShowMessage('Wcisnąłeś Alt+TAB');
end;
wstawiam
begin
Form1.Hide;
Shell_NotifyIcon(NIM_ADD,@IconNotifyData);
end;
Wyskakuje mi błąd [Error] Unit1.pas(196): Undeclared identifier: 'IconNotifyData'
Mam to samo przy procedurze wywołanej przez naciśnięcie buttona i tam ten błąd nie istnieje.
Juz sobie poradziłem
Wstawiłem to do procedurki Form.Hide