请教关于 Windows 桌面开发有关 SendMessage/PostMessaage 的问题.

94 天前
 qianqian888

大佬们好,我是新手小白. 我的目标是给别的窗口发送后台鼠标点击事件. 我尝试了 SendMessage/PostMessaage,但发现了一系列的情况都被限制了:

  1. 窗口最小化不行;
  2. 窗口在后台但被其他全屏/最大化窗口遮挡也不行,比如浏览器;
  3. 系统级应用也不行(gpt 告诉我说如资源管理器/计算器等都不可以)

感觉限制好多啊...有啥办法么? 我正在尝试写一个办公自动化脚本,就是指定不同窗口进行不同的后台自动化工作,而不影响用户在前台的窗口上工作.

1163 次点击
所在节点    问与答
8 条回复
qianqian888
94 天前
如果是前台控制鼠标键盘的话,同时就只能干一件事...
dandycheung
94 天前
你用错 API 了,你去看看 SendInput 。
qianqian888
94 天前
@dandycheung SendInput 是前台控制,用户的鼠标和键盘直接被接管和控制. 这样就没办法多窗口同时操作了. 是我对 API 的理解有问题么?
qianqian888
94 天前
@dandycheung 我再去看了一下文档,确实 SendInput 是全局影响的.不是后台点击和输入...
asde111
94 天前
试下把目标窗口隐藏到托盘(SW_HIDE),就是像 qq 那样只剩下一个图标,然后再发送消息;或者
如果只是要点击按钮,获得该按钮的句柄后,给按钮发送 BN_CLICKED 消息;或者
如果目标窗口是浏览器,那么在你的程序里面嵌入个 cef 来打开网页,然后就可以用消息模拟鼠标点击了
passive
94 天前
现在都是自画的控件,SendMessage/PostMessaage 发个 WM_COMMAND 给母窗口大概都没效果。WM_MOUSE 也不一定会被处理。那个年代过去了。
SWALLOWW
93 天前
看一下游戏脚本怎么写吧。
涉及到几个问题:
1 应该只有窗口最小化不行这个问题是成立的,之前的办法是只露出一下程序窗口,其他的部分移除屏幕外。
2 关于消息响应方式,通过消息的方式你这种,额,有几率行,还有一种直接走驱动的,不会走消息,所以你发送消息是无用的。
qianqian888
92 天前
@SWALLOWW
@passive
@asde111 谢谢你们.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1127886

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX