请问如何给一个应用程序发消息,比如是模拟按键或鼠标,就好象是外挂程序一样,请举个例子!谢谢!
解决方案 »
- delphi xe3编译的程序,右键菜单是英文的,怎么整成中文的啊?
- 用clientdataset如何连接本机access数据库(如**.mdb)
- 请问怎么用ClientSocket控件实现SSL协议的Post方法?
- 求助关于拨手机号的问题
- Delphi+Oracle+存储过程的问题(急求)
- 问题,急,火急
- 在用ADOQUERY缓存录入时如何保证数据的唯一性?
- 在2K中怎样屏蔽键盘的输入和功能键?
- 关于UTF-8编码的存取问题
- 如何读取Outlook中的邮件地址到一个StringList中?谢谢
- 帮忙看看这个树接点怎么添加?再此先谢过了!!!!!!!!!
- 用image控件装入a.bmp,怎样改图片的宽为500相素后另存呢??
SendMessage(GetHandle, WM_LBUTTONUP, 0, MAKELPARAM(x,y));getHandle是获取目标句柄;在x/y位置实现鼠标 onclick
下面给你写了个例子:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var
rect:TRect;
x,y,lPara:Integer;
begin
GetWindowRect(Self.Handle,rect);//获得当前窗口的位置
x:=rect.Left+10; //当前窗口左上角x坐标加10
y:=rect.Top+10; //当前窗口左上角y坐标加10
lPara:=x+(y shl 16); //就算出lParam的值//向当前窗口发送左键按下消息,相当于鼠标在相对窗口(10,10)的位置按下
PostMessage(Self.Handle,WM_LBUTTONDOWN,MK_LBUTTON,lpara);end;//相应鼠标按下事件
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
showmessage('WM_lbuttondown 在 ' + IntToStr(X) + ','+ IntToStr(y));
end;end.
简单点的可以用键盘/鼠标 事件
给你个键盘事件的例子:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
const
vk_o=79;
vk_k=75;
begin
edit1.SetFocus;
keybd_event (VK_O, 0, 0, 0); //press H
keybd_event (VK_O, 0, KEYEVENTF_KEYUP, 0); // release H
keybd_event (VK_K, 0, 0, 0); //press H
keybd_event (VK_K, 0, KEYEVENTF_KEYUP, 0); // release H
end;end.
beginwinexec('notepad',1);
//把记事本窗口激活
setforegroundwindow(findwindow(nil,'无标题-记事本'));//模拟输入 'abc'
keybd_event(65,0,KEYEVENTF_EXTENDEDKEY or 0,0);
keybd_event(65,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
keybd_event(66,0,KEYEVENTF_EXTENDEDKEY or 0,0);
keybd_event(66,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);keybd_event(67,0,KEYEVENTF_EXTENDEDKEY or 0,0);
keybd_event(67,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);//模拟 alt + F 打开文件菜单
keybd_event(VK_MENU,0,KEYEVENTF_EXTENDEDKEY or 0,0);
keybd_event(70,0,KEYEVENTF_EXTENDEDKEY or 0,0);
keybd_event(70,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
keybd_event(VK_MENU,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);//模拟输入 按 s 保存
keybd_event(83,0,KEYEVENTF_EXTENDEDKEY or 0,0);
keybd_event(83,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
end;