Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

Обработчик клавиатуры/мыши   Найти похожие ветки 

 
Colonel   (2004-10-28 13:08) [0]

Как написать обработчик клавы и мыши? Чтобы прога висела в трее и обрабатывала клаву и мышь и при нажатии на клаве/мыши определенной комбинации срабатывало действие, определенное в проге???

Всем сенкс.


 
-=SS=- ©   (2004-10-28 15:11) [1]

SetWindowsHook () (WH_Mouse, WH_KeyBoard) ++++ F1
Или  RegisterHotKey - Но это только на клаву


 
Colonel   (2004-10-28 16:57) [2]

Есть другие варианты ? Просто на изучение документации нет времени.


 
Digitman ©   (2004-10-28 17:19) [3]


> Просто на изучение документации нет времени


"другие" варианты даже предложить страшно.

kernel mode driver тебя устроит ?


 
AlexKocharin ©   (2004-10-28 17:29) [4]


> Чтобы прога висела в трее

Компонент CoolTrayIcon
(где найти, не помню - поищи в поисковиках)


> и обрабатывала клаву и мышь


unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   CheckBox1: TCheckBox;
   CheckBox2: TCheckBox;
   CheckBox3: TCheckBox;
   Edit1: TEdit;
   Button1: TButton;
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

const
 MyHotKey = ord(" ");

var
 Form1: TForm1;

implementation

{$R *.dfm}

var
 HookHandle: hHook;

function HookProc(Code: integer; WParam: word; LParam: Longint): Longint; stdcall;
var
 msg: PEVENTMSG;
 key: integer;
begin
 if Code >= 0 then begin
   result := 0;
   msg := Pointer(LParam);
   with Form1 do
     case msg.message of
       WM_MOUSEMOVE: Caption := IntToStr(msg.ParamL) + #32 + IntToStr(msg.ParamH);
       WM_LBUTTONDOWN: CheckBox1.Checked := true;
       WM_LBUTTONUP: CheckBox1.Checked := false;
       WM_RBUTTONDOWN: CheckBox2.Checked := true;
       WM_RBUTTONUP: CheckBox2.Checked := false;
       WM_KEYUP: CheckBox3.Checked := false;
       WM_KEYDOWN: begin
         CheckBox3.Checked := true;
         key := msg.paramL and 255;
         if key in [48..57, 65..90]
           then Edit1.Text := Edit1.Text + chr(key);
       end;
     end;
 end else
   result := CallNextHookEx(HookHandle, code, WParam, LParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// Form1.FormStyle := fsStayOnTop;
 CheckBox1.Enabled := false;
 CheckBox1.Caption := "left button";
 CheckBox2.Enabled := false;
 CheckBox2.Caption := "right button";
 CheckBox3.Enabled := false;
 CheckBox3.Caption := "keyboard";
 HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0);
 Edit1.Text := "";
 Edit1.Enabled := false;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
 if HookHandle > 0 then
   UnhookWindowsHookEx(HookHandle);
end;

end.



> Всем сенкс.

Пиши лучше "Thanks for all" или "Всем спасибо".
(А то букву "н" плохо видно...)

---
:-)



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

Текущий архив: 2004.12.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
1-1101720399
Tria
2004-11-29 12:26
2004.12.12
Taction, TMainMenu в mdi - проекте. Проблемы с Hotkey.


14-1101197756
blackman
2004-11-23 11:15
2004.12.12
Королевству 6 лет!


1-1101645706
Reminator
2004-11-28 15:41
2004.12.12
Криптография crypt-md5


9-1091606822
Ландграф Павел
2004-08-04 12:07
2004.12.12
поиск пути не по клеткам...


1-1101783419
Змей
2004-11-30 05:56
2004.12.12
файл в каталоге с *.exe