Windows自动化:模拟菜单项事件

2024-05-14 20:49:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我喜欢使用AutoHotKey和Python实现日常任务的自动化。我喜欢用我的键盘而不是鼠标,所以我倾向于用自动热键制作热键,这些热键可以执行你不需要使用鼠标的各种操作,或者你需要使用太多的键盘操作来完成这些操作。在

但有些动作我没能自动完成。例如,用于更改VMWare工作站中VM使用的监视器数量的下拉菜单。我认为有一件事能真正帮助我完成这项自动化任务,而且将来可能还会有更多的帮助,那就是能够模拟菜单项的点击。

这可能吗?我想愚弄一个程序以为它的菜单项被点击了。我知道用Python和AutoHotKey编程。有没有可能,特别是在这两种语言中?在


Tags: 程序数量编程vm鼠标键盘vmware监视器
1条回答
网友
1楼 · 发布于 2024-05-14 20:49:51

假设这是Windows,如果应用程序使用的是标准的hmnu项目,你可以用(相对)最小的努力做两件事中的一件

  1. 如果有一个热键,如用于保存的Ctrl+S,则可以使用SendKeys API(https://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx)将Ctrl+S发送到窗口中。

  2. 如果没有,您可以在选择项目后尝试查找哪个WM_命令被发送到窗口。您可以使用来自Microsoft(https://msdn.microsoft.com/en-us/library/dd460756.aspx)的Spy++来获取代码,然后用代码对该窗口执行PostMessage。

请注意,你需要确保你做了一个FindWindow来获得正确的HWND句柄来发送它。在

祝你好运:)

编辑跟进:关于如何使用Spy++的快速教程记事本.exe在

  1. 启动间谍++
    • 注:有两个,spyxx.exe文件以及spyxx_amd64.exe。如果其中一个没有记录消息-使用另一个
    • 注意:如果您先启动了Spy++,请在之后按F5刷新窗口列表记事本.exe开始
  2. Spy++主菜单>搜索>查找窗口
  3. 在“窗口搜索”对话框中,单击并按住“查找工具”旁边的“目标”图标
  4. 将光标拖到记事本标题栏上
  5. Spy++将显示标题:“Untitled-Notepad”和类:“Notepad”
  6. 单击“确定”
  7. 现在您将在窗口列表中看到记事本
  8. 右键单击该条目并选择“消息”
  9. 要控制流,请单击主菜单“消息”>;“日志记录选项”,然后单击“消息”选项卡
  10. 清除全部,只选择WM_命令,单击确定
  11. 在“记事本”中,转到“主菜单”>;“编辑”>;“转到”
  12. 在Spy++中,您将看到一行内容为“WM\u COMMAND wNotifyCode:0(从菜单发送)维德:24岁““

结果:现在我们知道,如果您要PostMessage(WM_COMMAND,MAKE_WPARAM(0,24),任何记事本.exe在系统上),将出现“转到”窗口。在

相关问题 更多 >

    热门问题