[delphi] Akcja przy przełączaniu okien

0

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ć?

0

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.

0

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.

0

Juz sobie poradziłem
Wstawiłem to do procedurki Form.Hide

1 użytkowników online, w tym zalogowanych: 0, gości: 1