如何以编程方式选择另一个应用程序中的上下文菜单项?

Hug*_*len 5 delphi winapi contextmenu messages sendmessage

目标应用程序是用Delphi(win32而不是.NET)编写的,并且是封闭源代码.

我想调用的操作称为复制,但没有明显的键盘快捷键.(Ctrl + Insert做错了,Ctrl + C什么都不做)

我可以找到我的目标HWND并说服它打开上下文菜单(它WM_RBUTTONDOWN/UP不响应WM_CONTEXTMENU).从菜单中HWND我甚至可以获得菜单句柄,MN_GETHMENU并找到我想要的菜单项.我只是不知道如何"选择"该项目的细节.菜单是"无模式"的,即无效.它HWND不是拥有的,所以我不知道许多隐藏的TPUtilWindow窗户中哪一个是真正的拥有者 - 否则我可能只是发送它WM_COMMAND而不是弹出菜单,这将是更好的选择.

虽然我确信它有助于各种各样的黑客攻击,但我宁愿不将代码注入目标进程.

以任何语言接受的答案.

Mas*_*ler 8

显然你能够发送WM_RBUTTONDOWN/UP消息并且它会响应.如果是这样,你还可以发送WM_KEYDOWN/UP消息吗?只要您知道菜单的结构并且它没有改变,请尝试告诉应用程序有人按下向下箭头X次,然后按ENTER键.这对我来说似乎是最简单的解决方案......