如图,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
试试看如下替代方法
http://www.codeproject.com/Articles/34038/UI-Automation-Framework-using-WPF
http://www.codeproject.com/Articles/33049/WPF-UI-Automation
10
版主正解,不过部分的句柄还是可用的,绝大部分是不好直接用的。
10
没有唯一的控件ID吧,所以获取不到按钮的句柄的