Форум: "WinAPI";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
ВнизОбработчик клавиатуры/мыши Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c