高分请教:一个vc++源码程序如何控制另一个未有源码的应用程序的菜单操作

alargel 2009-02-04 08:30:31
我使用vc++开发一个应用程序,我的程序功能是控制另一个程序,另一个程序没有源码,是已编译好的exe文件,提供了菜单,我如何控制另一个程序的菜单操作,也就是说,我如何使另一个程序先执行菜单的第一个子菜单,再执行第二个子菜单。
...全文
240 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgjdbg 2010-04-26
  • 打赏
  • 举报
回复
看不到回复,擦
sisiruowan 2009-10-11
  • 打赏
  • 举报
回复
学习学习
ws274888829 2009-02-06
  • 打赏
  • 举报
回复
学习学习 !
梅文海 2009-02-06
  • 打赏
  • 举报
回复
上面的方法已测试,请放心使用
梅文海 2009-02-06
  • 打赏
  • 举报
回复
用 eXeScope 查看该程序的 Menu,例如:
53000 为菜单“新建”
那么你就可以这么发:SendMessage(FindWindow("","程序标题"),WM_COMMAND,53000,0);
szqh97 2009-02-05
  • 打赏
  • 举报
回复
帮顶,学习中
alargel 2009-02-05
  • 打赏
  • 举报
回复
学习中……如果有人能发一段实例代码就好了。
matrixcl 2009-02-04
  • 打赏
  • 举报
回复
1.用spy找到窗口,同时可以获得“窗口标题”和“类名”。这两个信息在程序中获取窗口句柄(用FindWindow函数)时会用到

2.spy切换到消息页面,反选所有消息,然后只选WM_COMMAND。再在exe中操作该菜单,spy就知道了该菜单消息对应的wParam和lParam

3.在你的程序中,用FindWindow获得exe的窗口句柄,然后用::SendMessage(hWnd, WM_COMMAND, wParam, lParam)即可。
注:hWnd是FindWindow获得的,wParam、lParam是第二步获得的。
chenyingshu 2009-02-04
  • 打赏
  • 举报
回复
帮顶,学习学习
wyc761024 2009-02-04
  • 打赏
  • 举报
回复
先获取目标进程的句柄,使用该句柄可以获取目标程序的目标窗口,然后获得你的目标菜单的菜单句柄,
有了这个菜单句柄之后就能使用sendmessage给这个窗口发送你想要的菜单命令了.
csgdseed 2009-02-04
  • 打赏
  • 举报
回复
帮顶学习
tsocpp 2009-02-04
  • 打赏
  • 举报
回复
怎么向另一个程序的窗口发送WM_COMMAND消息?
hhyttppd 2009-02-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yndfcd 的回复:]
用Spy++看他的菜单命令,然后用SendMessage向该程序的窗口发送WM_COMMAND消息.
[/Quote]

此计可行,担必须知道哪个窗口处理相应的菜单命令,一个一个找吧(找到窗口名,再用FindWindow或EnumWindow)
Proteas 2009-02-04
  • 打赏
  • 举报
回复
帮顶,一楼正解.
delphi_911 2009-02-04
  • 打赏
  • 举报
回复
截获菜单发送到Windows的消息,然后在程序中模拟同样的消息处理试试。
yndfcd 2009-02-04
  • 打赏
  • 举报
回复
用Spy++看他的菜单命令,然后用SendMessage向该程序的窗口发送WM_COMMAND消息.

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧