【问题标题】:having HMENU handle is it possible to run programatically an item from that menu?拥有 HMENU 句柄是否可以从该菜单中以编程方式运行项目?
【发布时间】:2012-12-09 20:10:23
【问题描述】:

我有一个 HMENU,并且我知道该项目位于给定位置,拥有该信息是否可以执行以下操作:RunMenuItem(hMenu,3) 其中 3 是该项目的位置?

【问题讨论】:

  • 真正的问题是,“你从哪里得到HMENU?也许你得到它的地方暴露了一个更好的执行命令的界面。(例如自动化。)”

标签: winapi menu window


【解决方案1】:

当您从菜单中选择一个项目时,可能会发生以下两种情况之一:

  • WM_COMMAND 消息被发送到菜单的父窗口,包含菜单项 ID,或
  • 如果菜单显示时带有TrackPopupMenu with TPM_RETURNCMD 标志,则所选项目 ID 作为调用 TrackPopupMenu 的结果返回。

在第一种情况下,您可以通过简单地使用适当的参数自己发布WM_COMMAND 消息来以编程方式模拟这一点。您需要在 HMENU 中查询菜单项 ID(使用 GetMenuItemInfo)。

在第二种情况下,没有简单的方法来模拟它,因为它依赖于调用线程实际调用TrackPopupMenu 并处理结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-31
    • 2013-06-29
    • 2021-12-14
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    相关资源
    最近更新 更多