社区
进程/线程/DLL
帖子详情
怎么控制一 exe 软件?
kacy16
2009-06-09 10:40:43
小弟我目前想实现这样一个功能:
有一个叫 Sample.exe的程序(该程序没有代码,也没有任何资料的。),
该软件一个界面,里面有一编辑输入框,有一个按钮。想实现自己写一个程序,该程序可以操纵Sample.exe,可以往该Sample.exe的编辑输入框中输入数据,可以点击按钮的功能。
烦请各位高手提供提供思路。
...全文
84
29
打赏
收藏
怎么控制一 exe 软件?
小弟我目前想实现这样一个功能: 有一个叫 Sample.exe的程序(该程序没有代码,也没有任何资料的。), 该软件一个界面,里面有一编辑输入框,有一个按钮。想实现自己写一个程序,该程序可以操纵Sample.exe,可以往该Sample.exe的编辑输入框中输入数据,可以点击按钮的功能。 烦请各位高手提供提供思路。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
29 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ccyybn
2011-12-03
打赏
举报
回复
这个帖子让我收获良多
litomboy
2009-06-10
打赏
举报
回复
学习
keanchen0928
2009-06-10
打赏
举报
回复
mark
greatws
2009-06-10
打赏
举报
回复
[Quote=引用 12 楼 kacy16 的回复:]
现在碰到一问题:
1 我现在是用 CreateProcess 来调用(运行)Sample.exe,可以调用成功,但是用FindWindowEx(NULL,NULL,NULL,"Sample"),获得窗体的句柄不行的?
[/Quote]
FindWindowEx是用来查找子窗口的,查找主窗口用FindWindow
skyxie
2009-06-10
打赏
举报
回复
[Quote=引用 12 楼 kacy16 的回复:]
现在碰到一问题:
1 我现在是用 CreateProcess 来调用(运行)Sample.exe,可以调用成功,但是用FindWindowEx(NULL,NULL,NULL,"Sample"),获得窗体的句柄不行的?
[/Quote]
用窗口标题不保险,比如中英文的OS可能不同,程序运行时也可能是改变标题
建议使用FindWindowEx 第3个参数,classname进行查找,你可以用spy++看看sample主窗口的classname
kacy16
2009-06-10
打赏
举报
回复
现在碰到一问题:
1 我现在是用 CreateProcess 来调用(运行)Sample.exe,可以调用成功,但是用FindWindowEx(NULL,NULL,NULL,"Sample"),获得窗体的句柄不行的?
kacy16
2009-06-10
打赏
举报
回复
现在正在按照两位高人的思路正在测试,看是否能成功控制这个EXE软件.
zlmzhuanjia
2009-06-10
打赏
举报
回复
up 学习了
dengxuxing
2009-06-10
打赏
举报
回复
强人啊!学习
Fireway2008
2009-06-10
打赏
举报
回复
[Quote=引用 26 楼 kacy16 的回复:]
在各位的帮助下,现在我基本能控制一 exe文件了.但是还有一些小问题:
假如两个编辑框都在同一个GroupBox里面,怎么去区分他们?是否要需要根据control id等信息来判断哪个编辑框?
欢迎大家继续对该问题发表意见,准备过几天才结帖.
[/Quote]
根据控件ID 是最妥当的方法,
不同窗体有可能有相同的ID控件。
就如同2个不同的人,他们身高都是175。
哈利路亚1874
2009-06-10
打赏
举报
回复
二楼正解之一
kacy16
2009-06-10
打赏
举报
回复
在各位的帮助下,现在我基本能控制一 exe文件了.但是还有一些小问题:
假如两个编辑框都在同一个GroupBox里面,怎么去区分他们?是否要需要根据control id等信息来判断哪个编辑框?
欢迎大家继续对该问题发表意见,准备过几天才结帖.
kacy16
2009-06-10
打赏
举报
回复
谢谢 skyxie !
MSDN上的解释是:
The SendMessage function sends the specified message to a window or windows. It calls the window procedure for the specified window and does not return until the window procedure has processed the message.
我的理解:一直等到处理完消息(也就是该消息所对应的函数也执行完毕),SendMessage才返回.所以,用SendMessage可以起到
同步的作用.
skyxie
2009-06-10
打赏
举报
回复
[Quote=引用 23 楼 kacy16 的回复:]
谢谢!用PostMessage问题更大,我是需要Sample.exe中的某个按钮处理完后,我自己才好进行下一步动作。
所以,我想问的是:跨进程的通过SendMessage()来传递消息,也是否等到该消息处理完后才返回呢?
[/Quote]
是的
你可以仔细看看 MSDN SendMessage
kacy16
2009-06-10
打赏
举报
回复
谢谢!用PostMessage问题更大,我是需要Sample.exe中的某个按钮处理完后,我自己才好进行下一步动作。
所以,我想问的是:跨进程的通过SendMessage()来传递消息,也是否等到该消息处理完后才返回呢?
littlefish636
2009-06-10
打赏
举报
回复
[Quote=引用 21 楼 kacy16 的回复:]
我另外有一个疑问:
一般来说,SendMessage()函数是等 该消息 处理完后才返回的?
但是现在是跨进程的通过SendMessage()来传递消息,也是否等到该消息处理完后才返回呢?
例如:
向对话框发送 BN_CLICKED的WM_COMMAND 消息
SendMessage(hDlg, WM_COMMAND, (WPARAM)(BN_CLICKED) …
是否等到该按钮的按击事件处理完才返回?
[/Quote]
PostMessage(hDlg, WM_COMMAND, 按钮ID, 0)...
kacy16
2009-06-10
打赏
举报
回复
我另外有一个疑问:
一般来说,SendMessage()函数是等 该消息 处理完后才返回的?
但是现在是跨进程的通过SendMessage()来传递消息,也是否等到该消息处理完后才返回呢?
例如:
向对话框发送 BN_CLICKED的WM_COMMAND 消息
SendMessage(hDlg, WM_COMMAND, (WPARAM)(BN_CLICKED) …
是否等到该按钮的按击事件处理完才返回?
路人乙2019
2009-06-10
打赏
举报
回复
[Quote=引用 2 楼 skyxie 的回复:]
1. 得到 主对话框HWND,编辑输入框 / 按钮 的HWND
EnumWindows + FindWindowEx 找到 Sample.exe 的 主对话框HWND (假设为hDlg), 编辑输入框 / 按钮 的HWND (假设为hEdit, hBtn)
2. 模拟输入数据
SendMessage(hEdit, WM_SETTEXT ...)
3. 模拟点击按钮
3.1)
用spy++找到按钮的control ID (假设为nID)
3.2)
向对话框发送 BN_CLICKED的WM_COMMAND 消息
SendMessage(hDlg, WM_COMMAND, (WPARAM)(BN_CLICKED) …
[/Quote]对头.
luckyboy101
2009-06-10
打赏
举报
回复
强,学习
kacy16
2009-06-10
打赏
举报
回复
现在问题大致解决了,
幸好那Sample.exe中的两个 编辑框(TMemo) 分别在 两个 GroupBox 里面,而且这两个 GroupBox有不同的标题,
所以我就容易找到了.我的大致方法如下:
1 先找到一个GroupBox
HWND hGroup1=::FindWindowEx(g_hwndExe,NULL,"TGroupBox","Group1");
2 再去找TMemo
HWND hMemo1=::FindWindowEx(hGroup1,NULL,"TMemo",NULL);
3 然后,这样就往这个编辑框输入了 aryData里面的数据.
::SendMessage(hMemo1,WM_SETTEXT,0,(LPARAM)aryData);
非常谢谢 oyljerry,skyxie,greatws等各位兄弟大力出手相助,
因为现在时间比较紧,所以过一段时间再结帖.
也非常欢迎大家继续讨论该类问题,假如两个编辑框都在同一个GroupBox里面,怎么去区分他们?是否要根据control id等信息?
加载更多回复(9)
Unity 打开关闭外部的
exe
软件
在项目中需用Unity
控制
打开、关闭第三方
exe
软件
。介绍了两种路径设置方法,一是给定死路径,可在Unity未打包时测试;二是利用Application.dataPath,在Unity打包后,在Resources下新建文件夹存放
EXE
,可在任意盘引用。
EXE
加密V7.1增强版VIP2——专业级
软件
保护解决方案
本文深入探讨
EXE
文件加密、代码混淆、加壳压缩及硬件指纹绑定等核心技术,介绍如何通过多层防护机制防止反编译与非法复制。重点分析‘一机一码’授权体系的实现原理,结合非对称加密与许可证密钥生成策略,构建安全可靠的
软件
保护方案,适用于商业化
软件
的安全发布与版权
控制
。
深潜Chrome幽灵进程:驯服software_reporter_tool.
exe
的CPU占用率
本文深入剖析software_reporter_tool.
exe
这一进程,提供降低CPU占用的实战策略,包括调整Chrome设置、手动
控制
软件
报告工具、利用第三方工具辅助及彻底移除等方案。
卸载某个
软件
的方法
博客讲述了在Windows系统因内存不足需卸载
软件
的情况,介绍了三种卸载方法。一是通过
控制
面板卸载;二是找到
软件
所在位置,双击“Uninstall.
exe
”卸载;若前两种不行,可通过cmd命令操作,若还不行则直接找到文件位置删除。
【Windows】Windows开机
软件
启动实现
博客介绍了Windows开机
软件
启动及取消UAC权限询问弹窗的两种方案。一是创建任务计划,通过设置常规参数、触发器和操作来实现
软件
开机自动启动;二是降低用户权限,在
控制
面板中更改用户账户
控制
设置,使所有
exe
启动不再询问权限弹窗。
进程/线程/DLL
15,466
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章