首页
社区
课程
招聘
未解决 请教一个模拟.net程序按钮单击的问题 0.00雪花
发表于: 2014-8-19 22:04 4294

未解决 请教一个模拟.net程序按钮单击的问题 0.00雪花

2014-8-19 22:04
4294
要用C或ASM写一个程序,其中一个任务是模拟单击一个.net程序中的按钮。之前针对其他类型的一些程序模拟按钮单击一般都是向其主窗口发送WM_COMMAND消息。但.net程序的主窗口过程好像不处理WM_COMMAND消息。而直接向按钮发送WM_LBUTTONDOWN和WM_LBUTTONUP又很不可靠。从没接触过.net,不知道其处理控件事件的工作机制。希望各位高手给个思路。谢谢!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 34
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这个还是等大神回答你吧。
2014-8-19 23:23
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
哪位高手在啊,指导一下
2014-8-20 10:59
0
雪    币: 134
活跃值: (11)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
FindWindowEx获取到按钮,然后SendMessage
2014-8-20 11:34
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我需要的思路是向主窗口发送消息,不知道是否可以实现。 难道.net程序不通过主窗口的消息处理来响应控件事件?
2014-8-20 11:54
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
侯捷老师说过"勿在浮沙筑高台"  一步一步来! 加油!!
2014-8-20 16:04
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
好像是4F说的一样,
2014-8-21 08:29
0
雪    币: 274
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
来学习了 看看
2014-8-21 09:17
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
4楼基本上正解了。主要是的困难是如何自动的获取这个按钮的句柄。
方法:
用FindWindow找到窗口的句柄 ,然后窗口再用FindWindowEx找到子窗口句柄,通过子窗口句柄再用FindWindowEx找到按钮的句柄。
找到按钮句柄后用PostMessage或SendMessage 这两个API,向按钮的句柄发送消息。即可。

我测试验证的时候是用Microsoft Spy++工具手动获取按钮句柄。
eg:
            const int WM_CLICK = 0x00F5;
            int id = 0x00110F58;//这个ID是要模拟点击按钮的句柄 ;我是通过Microsoft Spy++工具手动获取的。
            Win32API.PostMessage(id, WM_CLICK, 0, 0);
2014-8-21 11:10
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
亲,如果解决了,给分哈。
2014-8-22 14:41
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
如果自己有.net程序的代码,可以在.net程序中重载WndProc,即可通过窗体处理消息,处理过程类似WinSDK
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == 0xxxx)
            {
                int num2 = m.WParam.ToInt32() & 0xxxx;
                if (num2 == xxxx)
                {
                     Button_Click(null,null);
                }
            }
            base.WndProc(ref m);
        }
2014-8-28 16:10
0
雪    币: 288
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
模拟鼠标事件,连接中是一个列子http://kuai.xunlei.com/d/.e-NBcyOjw0QVAQA5b5
2014-9-10 16:37
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
我是用的mouse_event解决的
2014-9-13 17:15
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
虽没找到理想的解决方法,仍谢谢大家的指导!WM_CLICK虽可实现,但不是太可靠。mouse_event则限制更多。
2015-1-1 16:20
0
游客
登录 | 注册 方可回帖
返回
//