首页新闻找找看学习计划

c# 通过句柄控制另外一个程序按钮,作用无效

0
悬赏园豆:30 [待解决问题]

我用一个c# 程序 通过spy++ 获取到另外一个程序的 按钮句柄 进行点击操作无效(测试的软件已经正常打开了);

我用此方法测试了 电脑自带的 计算器程序可以正常使用 代码如下

1  IntPtr okbtn = new IntPtr(0x0A0970);  //spy++ 获取到的按钮句柄
2  const uint BM_CLICK = 0xF5; 
3  System.Threading.Thread.Sleep(1000);  
4  SendMessage(okbtn, BM_CLICK, 0, 0);

我测试几个程序发现 spy++ 获取的按钮 类名是 “Button” 都可以正常发送按钮点击操作;而我要控制的程序 不能操作的按钮 用spy++ 获取的类名是“TsBitBtn”;

同样我测试了文本框也是一样 其他程序类名为“Edit”的文本框可以正常用SendMessage(hWnd, WM_SETTEXT, IntPtr.Zero, lParam);发送文本;而我要控制的程序spy++获取的文本框类名是“TsEdit”,就控制不了

求解决,谢谢大家

wolly的主页 wolly | 初学一级 | 园豆:124
提问于:2015-09-28 13:13
< >
分享
所有回答(5)
0

解决不了,除非你知道对方的源码。

Launcher | 园豆:44970 (高人七级) | 2015-09-28 14:42
0

按钮可以试一下发送键盘消息Enter试试。

文本框可以试试把文本拆分成单个字符然后用键盘消息发送。

I,Robot | 园豆:9461 (大侠五级) | 2015-09-28 17:26

谢谢大哥的回复   我尝试了 发enter消息 没有变化

我用此方法试了其他部分程序是可以的  但是我要控制的那个程序 就好像是没有获取到句柄一样没有回应 但是我直接用spy++ 确实获到取我要控制的程序的句柄 直接操作的 还是不行

支持(0) 反对(0) wolly | 园豆:124 (初学一级) | 2015-09-29 10:07

@wolly: 实在不行就取Button坐标,发鼠标点击事件吧。

支持(0) 反对(0) I,Robot | 园豆:9461 (大侠五级) | 2015-09-29 10:11
0

句柄取的不对吧,

然后用spy++ 看一下对方程序的按钮发的是什么,有的时候可能不是send而是post,只监视你需要的控件,按道理如果是设计界面拖好的控件是有固定ID的根据ID 去找句柄

天真浪浪 | 园豆:950 (小虾三级) | 2015-09-29 12:07
0

既然明确了不是系统标准BUTTON窗口,而是“TsBitBtn”,那这个按钮未必对BM_CLICK有处理啊

先确定“TsBitBtn”内部用的什么消息

赛提斯特 | 园豆:204 (菜鸟二级) | 2015-10-19 21:21
0

你调试看了句柄获取到了吗?你可以通过按钮的类名和标题名去获取他的句柄,有的控件句柄是一直变的,而且你获取的文本框它上一层是否还嵌套着控件...你先判断句柄是否得到吧

美。 | 园豆:40 (初学一级) | 2016-01-26 14:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册