已知一个窗口的句柄 如何遍历所有的控件(得到它们各自的属性) 回调函数里不是有childwindow的句柄么?http://topic.csdn.net/u/20110831/16/c6fe7ccb-0be0-4244-8945-86dc0baa268d.html 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 foreeach(contrl ctl in frm.contrls) http://blog.csdn.net/wangyong0921/article/details/6693917这个肯定可以解决 我看了一下 问题是 我现在是通过钩子知道的窗体句柄 也就是说 我完全不知道任何关于那个程序的所有代码 信息 这个方法还是不行额 我想还是通过API实现的方法 如果能知道那些东西就不需要这么麻烦了 关于EnumCHildWindows可以参考这个:http://qianglc.blog.163.com/blog/static/10306850320097111045667/ 试试? /// <summary> /// 该函数获得一个顶层窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数不查找子窗口。在查找时不区分大小写。 /// </summary> /// <param name="hwndParent">要查找子窗口的父窗口句柄,如果hwnjParent为NULL,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口</param> /// <param name="hwndChildAfter">子窗口句柄。查找从在Z序中的下一个子窗口开始。子窗口必须为hwndPareRt窗口的直接子窗口而非后代窗口。如果HwndChildAfter为NULL,查找从hwndParent的第一个子窗口开始。如果hwndParent 和 hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口。</param> /// <param name="lpClassName">指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针</param> /// <param name="lpWindowName">指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为空,则为所有窗口全匹配</param> /// <returns></returns> [DllImport("user32.dll")] public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpClassName, string lpWindowName); foreach(control ctrl in Form1.controls)然后 GetType(ctrl) 得到类型,ctrl.handle 得到句柄,我就是这样用的,完全可行,只是效率不高而已。(你要是遍历,就再递归找 control.controls) 控件的句柄会作为回调函数的参数传进去属性,只有用API获取。主要使用SendMessage,因为SDK中程序和控件的交互基本都是通过windows消息实现的。没有办法简单地获得一个控件的“所有属性值”,只能一个个按需读取。 实体框架如何判断一个表是否有记录? lock的小问题,马上给分. winform中如何设置超时 求助,重新封装gridview ado.net如何解决多用户同时修改的问题? 请问C#中如何取得字符串的特定位 如何解决C#程序访问网络时的CPU占用问题?(分不够再加) 基于.net框架的应用程序运行速度问题!请高手指教。 一个关于数组的错误,请帮忙看看,谢谢! 求情教 VC2008智能设备项目Windows窗体 怎么加背景图片 winfrom 如何加载控件 提高效率
我看了一下 问题是 我现在是通过钩子知道的窗体句柄 也就是说 我完全不知道任何关于那个程序的所有代码 信息 这个方法还是不行额 我想还是通过API实现的方法 如果能知道那些东西就不需要这么麻烦了
http://qianglc.blog.163.com/blog/static/10306850320097111045667/
/// 该函数获得一个顶层窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数不查找子窗口。在查找时不区分大小写。
/// </summary>
/// <param name="hwndParent">要查找子窗口的父窗口句柄,如果hwnjParent为NULL,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口</param>
/// <param name="hwndChildAfter">子窗口句柄。查找从在Z序中的下一个子窗口开始。子窗口必须为hwndPareRt窗口的直接子窗口而非后代窗口。如果HwndChildAfter为NULL,查找从hwndParent的第一个子窗口开始。如果hwndParent 和 hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口。</param>
/// <param name="lpClassName">指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针</param>
/// <param name="lpWindowName">指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为空,则为所有窗口全匹配</param>
/// <returns></returns>
[DllImport("user32.dll")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpClassName, string lpWindowName);
然后 GetType(ctrl) 得到类型,
ctrl.handle 得到句柄,
我就是这样用的,完全可行,只是效率不高而已。
(你要是遍历,就再递归找 control.controls)
没有办法简单地获得一个控件的“所有属性值”,只能一个个按需读取。