Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

Перехват нажатия кнопки.   Найти похожие ветки 

 
Lera   (2004-11-29 12:15) [0]

Скажите пожалуйста, как перехватить нажатие любой кнопки на клавиатуре вне зависимости от того, какая из форм приложения активна, либо в случае когда приложение свернуто.


 
MAINUSER ©   (2004-11-29 12:47) [1]

Используй HOOK для клавиатуры:
Вот тебе пример DLL файлы(надеюсь ты имеешь понятия на счёт DLL):

library Hook;
uses Windows, SysUtils;
const KF_UP_MY = $40000000;
var CurrentHook: HHook;
   KeyArray: array[0..19] of char;
   KeyArrayPtr: integer;
   CurFile:text;
function GlobalKeyBoardHook(code: integer; wParam: integer; lParam:
integer): longword; stdcall;
var
i:integer;
begin
 if code< 0 then
  begin
    result:=CallNextHookEx(CurrentHook,code,wParam,lparam);
    Exit;
  end;
 if ( (lParam and KF_UP_MY ) = 0) and (wParam> =65) and (wParam< =90) then
   begin
     KeyArray[KeyArrayPtr]:=char(wParam);
     KeyArrayPtr:=KeyArrayPtr+1;
     if KeyArrayPtr> 19 then
      begin
       for i:=0 to 19 do
       begin
         Assignfile(CurFile,"d:\log.txt");
         if fileexists("d:\log.txt")=false then rewrite(CurFile)
         else Append(CurFile);
         write(Curfile, KeyArray[i]);
         closefile(curfile);
       end;
       KeyArrayPtr:=0;
      end;
   end;
   CallNextHookEx(CurrentHook,code,wParam,lparam);
   result:=0;
end;
procedure SetupGlobalKeyBoardHook;
begin
 CurrentHook:=SetWindowsHookEx(WH_KEYBOARD, @GlobalKeyBoardHook,HInstance, 0);
 KeyArrayptr:=0;
end;
procedure unhook;
begin
 UnhookWindowshookEx(CurrentHook);
end;

exports
SetupGlobalKeyBoardHook, UnHook;
begin
end.

УДАЧИ!


 
mbIkola   (2004-12-03 14:22) [2]

А на 95 и 98 это не пройдет :(


 
midavik ©   (2004-12-03 15:09) [3]

Вот примерчик.

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 protected
  procedure hotykey(var msg:TMessage); message WM_HOTKEY;
 end;

var
 Form1: TForm1;
 id,id2:Integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
id:=GlobalAddAtom("hotkey");
  RegisterHotKey(handle,id,mod_control,81);  //CTRL+R
id2:=GlobalAddAtom("hotkey2");
  RegisterHotKey(handle,id2,mod_control,82); //CTRL+Q
end;

procedure TForm1.hotykey(var msg:TMessage);
begin
if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=81) then
 ShowMessage("Ctrl + Q was pushed !");
if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=82) then
 ShowMessage("Ctrl + R was pushed !");
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(handle,id);
UnRegisterHotKey(handle,id2);
end;

end.




Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.036 c
14-1104527215
Игорь Шевченко
2005-01-01 00:06
2005.01.23
Наталия, с днем рождения!


9-1097572868
VolanD
2004-10-12 13:21
2005.01.23
Direct3D


4-1102007354
grigory
2004-12-02 20:09
2005.01.23
Пометить кластер как сбойный!


1-1105157951
Progh
2005-01-08 07:19
2005.01.23
Указатели


3-1103347304
slart
2004-12-18 08:21
2005.01.23
SQL+delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский