怎样用sendmessage对窗口产生鼠标和键盘消息(20分)

  • 主题发起人 主题发起人 waif
  • 开始时间 开始时间
W

waif

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在需要控制指定窗口,需要产生鼠标及键盘的消息,能用sendmessage产生吗?
能有源码吗?
 
为什么一定要用SendMessage?用SetCursorPos、mouse_event、keybd_event几个函数不行吗?
 
不行呀,用它们其他程序会会受影响的,我希望同时还能运行其它程序在窗口里的
 
waif: 参考参考我刚写的代码
procedure TForm1.Button1Click(Sender: TObject);
var
i,hwnd: Integer;
msg: String;
begin
hwnd := FindWindow('NotePad',nil);
if hwnd<>0 then
begin
hwnd := FindWindowEx(hwnd,0,'Edit',nil);
msg := 'Hello, world!';
for i := 1 to Length(msg) do
SendMessage(hwnd,WM_CHAR,Ord(msg),1);
end;
end;
 
Reboot非常谢谢你的代码
我就是需要这样的
现在还差鼠标的,也是用sendmessage能指定鼠标到指定坐标按键吗?
 
可以!如
SendMessage(hwnd,WM_LBUTTONDOWN,MK_LBUTTON,y shl 16+x);
SendMessage(hwnd,WM_RBUTTONDOWN,MK_RLBUTTON,y shl 16+x);
认真看一下消息的参数:)
 
不知你做什么项目。
鼠标消息的目的窗口句柄并不好确定。
比如你要模拟用户在计算器的0上按一下,
你的先获得button0的句柄hwnd(要通过EnumChildWindow,而且不好判断),
再发送SendMessage(hwnd,WM_LBUTTONDOWN,MK_LBUTTON,0)
和SendMessage(hwnd,WM_LBUTTONUP,MK_LBUTTON,0);
我一般这样做:
鼠标消息经常会产生WM_COMMAND,
发送鼠标消息不如发送相应的WM_COMMAND.
上面的例子可这样实现:
procedure TForm1.Button2Click(Sender: TObject);
var
i,hwnd: Integer;
msg: String;
begin
hwnd := FindWindow('SciCalc',nil);
if hwnd<>0 then
begin
msg := '20001122';
for i := 1 to Length(msg) do
SendMessage(hwnd,WM_COMMAND,124+Ord(msg)-48,0);
end;
end;
^-^
 
接受答案了.
 

Similar threads

S
回复
0
查看
829
SUNSTONE的Delphi笔记
S
S
回复
0
查看
780
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
787
DelphiTeacher的专栏
D
D
回复
0
查看
645
DelphiTeacher的专栏
D
后退
顶部