向外部程序的按钮发送按键消息

DeltaCat 2010-04-08 09:52:27
现有一个外部程序,是.NET开发的。

一个窗口中,有一个按钮,这个按钮被做了特殊设置,不能通过键盘选中(就是TAB和上下左右键,都移动不上去),只能通过鼠标单击。

问题:

我向这个按钮,发送 BM_CLICK 消息,还有 WM_LBUTTONDOWN 和 WM_LBUTTONUP 组合消息,按钮都收到了。
但是,响应的结果 却和 用鼠标去点击不一致的。


请大家给指点一下。谢谢。
...全文
317 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyk120 2010-04-21
  • 打赏
  • 举报
回复
你得先获得焦点,然后再进行模拟点击
jsl8998620 2010-04-21
  • 打赏
  • 举报
回复
学习一下
learning8899 2010-04-09
  • 打赏
  • 举报
回复
在模拟前需要模拟一下鼠标点击窗口,这样窗口提到前面就可以了
kfcoffe 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 alexzhang00 的回复:]

我向这个按钮,发送 BM_CLICK 消息,还有 WM_LBUTTONDOWN 和 WM_LBUTTONUP 组合消息,按钮都收到了。
但是,响应的结果 却和 用鼠标去点击 是不一致的。


请大家……
[/Quote]
lz是不是发送消息,sendMessage这样,如果是这样没反应,估计是lz发送消息的时候传递的点击位置坐标有问题,以前碰到过~~~
SQLDebug_Fan 2010-04-08
  • 打赏
  • 举报
回复
可以参考Avan_Lan的代码
金卯刀 2010-04-08
  • 打赏
  • 举报
回复

procedure TForm1.Button1Click(Sender: TObject);
var
rec : TRect ;
gp : TPoint;
begin
GetWindowRect(Button2.Handle,rec);
Mouse.CursorPos := rec.TopLeft;
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP ,0,0,0,0);
end;
merrymin 2010-04-08
  • 打赏
  • 举报
回复
获取按钮的坐标,然后模拟鼠标点击
VOID mouse_event(DWORD dwFlags,DWORD dx,DWORD dwFlags,OWORD dx,DWORD dy, DWORD dwData, DWORD dwExtralnfo);
DeltaCat 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sqldebug_fan 的回复:]

用模拟鼠标点击呢?
[/Quote]

请详细些,我主要做WEB开发的,WINFORM 这块不是很熟。

我获取到了 按钮的 HWND, 如何模拟呢?
SQLDebug_Fan 2010-04-08
  • 打赏
  • 举报
回复
用模拟鼠标点击呢?
金卯刀 2010-04-08
  • 打赏
  • 举报
回复
用模擬鼠標點擊的函數,一個缺點,就是目標程序必須能看得見,不能最小化或被其他程序蓋住。可以事先把目標窗口帶到最前面

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧