1.需要引用的dll
(1).FindWindow:发现窗口不包含子窗口
lpClassName
指向一个以NULL字符结尾的、用来指定类名的字符串或一个可以确定类名字符串的原子。如果这个参数是一个原子,那么它必须是一个在调用此函数前已经通过GlobalAddAtom函数创建好的全局原子。这个原子(一个16bit的值),必须被放置在lpClassName的低位字节中,lpClassName的高位字节置零。
如果该参数为null时,将会寻找任何与lpWindowName参数匹配的窗口。
lpWindowName
指向一个以NULL字符结尾的、用来指定窗口名(即窗口标题)的字符串。如果此参数为NULL,则匹配所有窗口名。
(2).FindWindowEx:发现子窗口
参数:(FindWindow发现的窗体句柄,IntPtr.Zero,类型名,null)
(3).GetWindowText:读取窗体文本
参数:(FindWindowEx发现的窗口句柄,StringBuilder字符串,最大字符长度)
(4).GetWindowTextLength:获取窗体文本长度
参数:FindWindow发现的窗体句柄
[DllImport("User32.dll", EntryPoint = "FindWindow", SetLastError = true)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("User32.dll", EntryPoint = "FindWindowEx", SetLastError = true)]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("user32.dll", EntryPoint = "GetWindowText", CharSet = CharSet.Auto)]
public static extern int GetWindowText(IntPtr hwnd, StringBuilder text, int uMaxCount);
[DllImport("user32.dll")]
public static extern int GetWindowTextLength(IntPtr hwnd);
2.
IntPtr subHandle = IntPtr.Zero;
IntPtr msgHandle = FindWindow(null, "标题");
subHandle = FindWindowEx(msgHandle, subHandle, "Static", null);
StringBuilder text = new StringBuilder(GetWindowTextLength(msgHandle) + 1);
int len = GetWindowText(subHandle, text, text.Capacity);
Console.WriteLine("窗口内容:" + text.ToString());
3.类型查看方法用spy++(vs》工具》spy++)
没找到的需要安装的c++核心功能组件(工具》获取工具和功能)