Тема: Хук клавы
Показать сообщение отдельно
  #2  
Старый 26.10.2010, 08:36
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Вот пример проги без окна, при нажатии ALT+1 - пикает ALT+А12 выход.

Код:
Program Proga;

Uses Windows, Messages;

Var
 W: TWndClassEx;
 H: HWND;
 Mesg : TMsg;

Procedure CloseProgram;
begin
 UnRegisterHotkey(H, 1);
 UnRegisterHotkey(H, 2);
 PostQuitMessage(0);
 Exit;
end;

Procedure SaveHWNDL2(p: Wparam);
begin
 if p = 1 Then Windows.Beep(8192, 50);
 if p = 2 Then CloseProgram;
end;

Function WindowProc(H:HWND; Msg: Integer; Wp:Wparam; Lp:Lparam):Lresult;
 stdcall;
Begin
Result:= 0;
 case Msg of
  WM_DESTROY: CloseProgram;
  WM_HOTKEY: SaveHWNDL2(Wp);
  Else Result:= DefWindowProc(H, Msg, Wp, Lp);
 end;
end;

begin
 W.cbSize:= SizeOf(W);
 W.lpfnWndProc:= @WindowProc;
 W.lpszClassName:= 'prog';
 RegisterClassEx(W);
 H:=CreateWindowEx(0,'prog','prog',0,0,0,0,0,0,0,0,nil);
 RegisterHotkey(H, 1, MOD_ALT, Ord('1'));
 RegisterHotkey(H, 2, MOD_ALT, VK_F12);
 Windows.Beep(8192, 50);
While GetMessage(Mesg,0,0,0) do
 begin
  TranslateMessage(Mesg);
  DispatchMessage(Mesg);
 end;

end.
Ответить с цитированием