Code Bye

c# 一个简单的窗体上有一个按钮,想用另外的程序控制这个按钮 FindWindow()


如图,wpf的一个简单窗体,只有一个按钮。现在想用另一个程序控制这个按钮,用如下代码,为什么不行的呢?
IntPtr a = FindWindow(null, “MainWindow”);    //获取窗口句柄
IntPtr b = FindWindowEx(a, 0, null, “Button”);//获取按钮句柄
SetForegroundWindow(a);
SendMessage(a,0xF5,0,0);//鼠标单击
b没有获取到。应该怎么改呢?
解决方案

20

你用spy++指一下按钮看看第三和第四个参数对不对

20

Button这里应该是按钮的名字吧,不是显示的文本

20

你这是在做外挂?
关键点就是找句柄,有根据窗体相对坐标找的,有循环整个窗体控件找的,你到网上找找。

20

那当然,wpf的界面是画出来的,不是win32窗体,没法用api操作。
试试看如下替代方法
http://www.codeproject.com/Articles/34038/UI-Automation-Framework-using-WPF
http://www.codeproject.com/Articles/33049/WPF-UI-Automation

10

版主正解,不过部分的句柄还是可用的,绝大部分是不好直接用的。

10

没有唯一的控件ID吧,所以获取不到按钮的句柄的

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c# 一个简单的窗体上有一个按钮,想用另外的程序控制这个按钮 FindWindow()