现在想实现的是通过程序去获取一个指定的窗体里面的几个控件的状态、属性,
窗体程序不能增添代码,没提供接口给我去读取它里面控件的属性。网上查了一下,
提到了通过FineWindow(string a, string b)来做。
可是看了一下没搞明白怎么去做,望大神们提供一些解决方案,最好还是有代码。谢谢啦~!
你在使用FindWindow去获得窗体里面的控件,我猜测你是想获取其它进程里面的控件状态吧!
1、如果是本程序中的窗体的话,你可以使用(Window)System.Windows.Interop.HwndSource.FromHwnd(IntPtr 这个是你要获取控件的窗体的句柄).RootVisual 获得这个窗口的资源,然后再获取里面某个控件的属性就OK了,接下来你应该知道怎么写代码了吧。
2、如果是其它进程里面的控件,且你那个其它进程你确定是.NET编写的话,你可以使用ManagedSpy去获取。具体怎么用,你百度一下就知道了。
3、如果其它进程是非.NET进程,那么你就得使用 FindWindow了。这个的话,具体怎么获取我也不太清楚,你只有自己百度试试咯!
如果楼主觉得有帮助,望采纳。
这个网上很好找的。 https://github.com/ForNeVeR/ManagedSpy
这里下载,如果有用,麻烦采纳哟。
可以使用GetFocus这个API函数获得焦点控件的句柄,再转换为Control即可。
[DllImport("user32.dll")]
private static extern IntPtr GetFocus();
public Control GetFocusedControl()
{
IntPtr hwnd = GetFocus();
Control ctl = Control.FromHandler(hwnd);
return ctl;
}