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

时间:2016-02-29 21:58:28

标签: python windows automation autohotkey

我喜欢使用AutoHotKey和Python自动执行日常任务。我喜欢使用我的键盘而不是鼠标,因此我倾向于使用AutoHotKey制作热键,这些热键会执行您需要使用鼠标的各种操作,或者您需要使用过多的键盘操作要做。

但有一些行动我不能在自动化方面取得成功。例如,下拉菜单用于更改VM在VMWare Workstation中使用的监视器数量。我认为有一件事能真正帮助我完成这项自动化任务,并且未来可能还有更多功能,能够模拟菜单项点击。

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

1 个答案:

答案 0 :(得分:1)

假设这是Windows,如果应用程序使用的是标准HMENU项目,您可以通过(相对)最小的努力完成两件事之一

  1. 如果有热键,例如Ctrl + S for Save,您可以使用SendKeys API(https://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx

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

  4. 请注意,您需要确保使用FindWindow来获取正确的HWND句柄以将其发送给。

    祝你好运:)

    编辑跟进:关于如何将Spy ++与Notepad.exe一起使用的快速教程

    1. 启动间谍++
      • 注意:其中有两个,spyxx.exe和spyxx_amd64.exe。如果没有记录消息 - 请使用其他
      • 注意:如果您首先启动Spy ++,请在FET Notepad.exe启动后点击F5刷新窗口列表
    2. Spy ++主菜单>搜索>查找窗口
    3. 在“窗口搜索”对话框中,单击并按住“查找工具”旁边的“目标”图标
    4. 将光标拖到记事本标题栏上
    5. Spy ++将显示标题:“无标题 - 记事本”和类:“记事本”
    6. 点击“确定”
    7. 您现在将在窗口列表中看到记事本
    8. 右键单击该条目,然后选择“消息”
    9. 控制流程,主菜单>消息>记录选项,消息选项卡
    10. 全部清除,仅选择WM_COMMAND,单击确定
    11. 在记事本中,转到主菜单>编辑>转到
    12. 在Spy ++中,你会看到一行“WM_COMMAND wNotifyCode:0(从菜单发送)wID:24”
    13. 结果:现在我们知道如果您要使用PostMessage(WM_COMMAND,MAKE_WPARAM(0,24),系统上任何Notepad.exe的HWND),将出现“转到”窗口。