//声明
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:以下是本篇文章正文内容,下面案例可供参考
一、主要内容?
句柄的获取,句柄名称的获取,句柄像控件的转化
二、使用步骤
1.引入方法
代码如下(示例):
//获取窗口标题
[DllImport("user32", SetLastError = true)]
private static extern int GetWindowText(
IntPtr hWnd,//窗口句柄
StringBuilder lpString,//标题
int nMaxCount //最大值
);
//获取类的名字
[DllImport("user32.dll")]
private static extern int GetClassName(
IntPtr hWnd,//句柄
StringBuilder lpString, //类名
int nMaxCount //最大值
);
//根据坐标获取窗口句柄
[DllImport("user32")]
private static extern IntPtr WindowFromPoint(
Point Point //坐标
);
2.调用
代码如下(示例):
1.根据位置获取窗口句柄: IntPtr formHandle = WindowFromPoint(p);//得到窗口句柄 p为当前位置(Point) StringBuilder title = new StringBuilder(256); 2.根据句柄获取窗口标题: GetWindowText(formHandle, title, title.Capacity);//得到窗口的标题 StringBuilder className = new StringBuilder(256); 2.根据句柄获取窗口类的名字:GetClassName(formHandle, className, className.Capacity);//得到窗口的类的名字
1.根据句柄获得其对象,此处以Button为例子: string clsName = className.ToString().ToLower(); if (clsName.Contains("button") || clsName.Contains("tbitbtn")) { Button btn = (Button)Control.FromHandle(formHandle);//12.16 }
总结
总的来说可根据的API较少,资料零散