我想编一个软件,可以监测一个软件中鼠标的移动的坐标变化,然后自动移动到另一个软件下。那位高手可以提供给点帮助,谢谢
解决方案 »
- 关于图像透明的处理
- 此号不要送100分,第一个进入者得100分
- 关于DirectoryListBox的小问题
- 有用过 RX Library 2.75 中的 Rxrichedit 者请进
- 请问怎么在delphi里面写这样一个程序给分。
- 谁能告诉我这是什么意思
- 自定义的消息ID不能太大???
- 我的表格为什么看不到数据?
- 急,TQUERY有获取最大记录数限制吗,我要得到20多万条,可是只得到19万多就没有了!
- 一个关于网络连接的故事!
- 我用ADOQuery执行 insert 或 update 语句,语法完全正确,为什么还系统跳出提示说‘语法错误’呢,百思不得其解。晕 ~~
- 急了一天了:如何释放临时表所占的内存?(快没分了,紧急求助!)
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
EventArr: array[0..1000] of EVENTMSG; //用于保存消息的数组
EventLog: Integer;
PlayLog: Integer;
hHook, hPlay: Integer;
recOK: Integer;
canPlay: Integer;
bDelay: Bool;implementation{$R *.DFM}// PlayProc是消息回放函数,当系统可以执行消息回放
//时调用该函数,程序就将先前记录的消息值返回到lParam指向的区域中,
//系统就会执行该消息,从而实现了消息回放。function PlayProc(iCode: Integer; wParam: wParam; lParam: lParam): LRESULT; stdcall;
begin
canPlay := 1;
Result := 0; if iCode < 0 then //必须将消息传递到消息链的下一个接收单元
Result := CallNextHookEx(hPlay, iCode, wParam, lParam)
else if iCode = HC_SYSMODALON then
canPlay := 0
else if iCode = HC_SYSMODALOFF then
canPlay := 1
else if ((canPlay = 1) and (iCode = HC_GETNEXT)) then begin
if bDelay then begin
bDelay := False;
Result := 50;
end;
pEventMSG(lParam)^ := EventArr[PlayLog];
end
else if ((canPlay = 1) and (iCode = HC_SKIP)) then begin
bDelay := True;
PlayLog := PlayLog + 1;
end;
if PlayLog >= EventLog then begin
UNHookWindowsHookEx(hPlay);
end;
end;
//HookProc是记录操作的消息函数,每当有鼠标键盘消息发生时,系统都会调用该函数,消息信
//息就保存在地址lParam中,我们可以把消息保存在一个数组中。function HookProc(iCode: Integer; wParam: wParam; lParam: lParam): LRESULT; stdcall;
begin
recOK := 1;
Result := 0;
if iCode < 0 then
Result := CallNextHookEx(hHook, iCode, wParam, lParam)
else if iCode = HC_SYSMODALON then
recOK := 0
else if iCode = HC_SYSMODALOFF then
recOK := 1
else if ((recOK > 0) and (iCode = HC_ACTION)) then begin
EventArr[EventLog] := pEventMSG(lParam)^;
EventLog := EventLog + 1;
if EventLog >= 1000 then begin
UnHookWindowsHookEx(hHook);
end;
end;
end;//点击记录按钮开始录像操作procedure TForm1.Button1Click(Sender: TObject);
begin
EventLog := 0;
//建立键盘鼠标操作消息纪录链
hHook := SetwindowsHookEx(WH_JOURNALRECORD, HookProc, HInstance, 0);
Button2.Enabled := True;
Button1.Enabled := False;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
UnHookWindowsHookEx(hHook);
hHook := 0;
Button1.Enabled := True;
Button2.Enabled := False;
Button3.Enabled := True;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
PlayLog := 0;
//建立键盘鼠标操作消息纪录回放链
hPlay := SetwindowsHookEx(WH_JOURNALPLAYBACK, PlayProc,
HInstance, 0);
Button3.Enabled := False;
end;procedure TForm1.Button4Click(Sender: TObject);
begin
ShowMessage('it''s recording');
end;end.
去下载个控件吧。
http://www.torry.net/vcl/system/windows/gpsyshook.zip