c#窗体根据标题查找MessageBox的内容

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++核心功能组件(工具》获取工具和功能)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值