【发布时间】:2012-12-09 20:10:23
【问题描述】:
我有一个 HMENU,并且我知道该项目位于给定位置,拥有该信息是否可以执行以下操作:RunMenuItem(hMenu,3) 其中 3 是该项目的位置?
【问题讨论】:
-
真正的问题是,“你从哪里得到
HMENU?也许你得到它的地方暴露了一个更好的执行命令的界面。(例如自动化。)”
我有一个 HMENU,并且我知道该项目位于给定位置,拥有该信息是否可以执行以下操作:RunMenuItem(hMenu,3) 其中 3 是该项目的位置?
【问题讨论】:
HMENU?也许你得到它的地方暴露了一个更好的执行命令的界面。(例如自动化。)”
当您从菜单中选择一个项目时,可能会发生以下两种情况之一:
WM_COMMAND 消息被发送到菜单的父窗口,包含菜单项 ID,或TrackPopupMenu with TPM_RETURNCMD 标志,则所选项目 ID 作为调用 TrackPopupMenu 的结果返回。在第一种情况下,您可以通过简单地使用适当的参数自己发布WM_COMMAND 消息来以编程方式模拟这一点。您需要在 HMENU 中查询菜单项 ID(使用 GetMenuItemInfo)。
在第二种情况下,没有简单的方法来模拟它,因为它依赖于调用线程实际调用TrackPopupMenu 并处理结果。
【讨论】: