社区
进程/线程/DLL
帖子详情
怎么控制一 exe 软件?
kacy16
2009-06-09 10:40:43
小弟我目前想实现这样一个功能:
有一个叫 Sample.exe的程序(该程序没有代码,也没有任何资料的。),
该软件一个界面,里面有一编辑输入框,有一个按钮。想实现自己写一个程序,该程序可以操纵Sample.exe,可以往该Sample.exe的编辑输入框中输入数据,可以点击按钮的功能。
烦请各位高手提供提供思路。
...全文
66
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)
开源一款远程
控制
软件
—— pcshare
这里开放一款远程
控制
软件
的源码——pcshare,该
软件
分为被
控制
端和
控制
端。部分界面如下:
控制
端通过寄生在被
控制
端的后台程序来实现
控制
,可以对被
控制
台进行文件管理、屏幕监控、键盘监控、监控管理、查看被
控制
端的服务和注册表,甚至是
控制
被
控制
端的摄像头。一、
软件
使用方法介绍:1. 启动PcShare.
exe
,这是
控制
端主程序,该程序会在8080端口上监听被
控制
端的连接。2. 生成被
控制
端宿主程序,点...
电脑怎么卸载
软件
?彻底卸载
软件
,4个方法分享
电脑怎么卸载
软件
?很多小伙伴喜欢在自己的电脑上安装各式各样的
软件
,可电脑空间不足,那就需要通过卸载电脑
软件
来清理空间了。电脑怎么卸载
软件
?彻底卸载
软件
有什么办法?今天小编分享了4个卸载
软件
的方法,来看看吧!
电脑桌面上的
控制
面板和计算机怎么没有了,
控制
面板在哪?没有
控制
面板怎么办...
控制
面板是电脑
控制
核心,或者称为
控制
中心,从
控制
面板中我们可以进入电脑基本的系统设置和
控制
,如,添加硬件、添加/删除
软件
、
控制
用户帐户,更改辅助功能选项、电脑外观设置、声音设置、打印机设置等等都可以在
控制
面板中找到设置入口,对于电脑爱好者来说
控制
面板必须学会使用。不少入门朋友遇到不知道
控制
面板在哪?或者出现
控制
打不开等情况,脚本之家编辑本文就来与大家谈谈
控制
面板的问题。 >电脑的很多设置都需...
计算机房的红蜘蛛
软件
怎么取消,如何脱离学校机房的红蜘蛛
控制
软件
的
控制
?...
在学校上机房课时,老师总是能通过红蜘蛛,极域这些
软件
来
控制
或监视我们的电脑,那么如何不被这些
软件
控制
呢,本文以红蜘蛛教室
控制
软件
为例,北陌来教你下面两种方法来脱离
控制
:1.断开红蜘蛛
软件
有些同学可能试过,通过任务管理器来结束红蜘蛛的进程,但发现这样做没用,即使关闭了红蜘蛛还是会自动启动,没关系,我们还有其他方法。首先在桌面的空白菜单栏右击,点击启动任务管理器打开后点击进程选项卡,找到REDAgen...
Windows10怎么让某个
软件
禁止联网?设置
软件
禁止联网的方法
如果想让一个
软件
禁止联网怎么办?有些
软件
是可以单击使用的,无需联网,但是如果没有设置的话,一打开就是默认联网的。关键是,这款
软件
有网络的时候老是弹出广告骚扰,如果能够限制它联网,这样使用其他联网的
软件
也不受影,也没有广告。 具体步骤: 1、
控制
面板 2、Windows Defender防火墙(如果没有,将
控制
面板查看方式改为“小图标”) 3、高级设置 4、出站规则,新建规则,选择「程序」,点击下一步 5、填入要禁止联网程序的路径,然后下一步 6、阻止连接,继续下一步 7、~ 8、写个名字,其实
进程/线程/DLL
15,467
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章