WPF获取控件的句柄
2013-11-26 10:17
429 查看
在WinForm中,获得句柄是一件很容易的事情,This.Handle或者Control.Handle就可以,最近在WPF的开发中发现找不到这个属性,一番查找资料后找到了两种方式.
1,使用WindowInteropHelper类可以获得Window的句柄,但这种方法有个局限性,它只接受类型为Window的参数,换句话说就是这种方法只能获得Window的句柄.
2,然后在实际工作中有时我们需要得到控件的句柄,我们还有另外一个办法,不管是Window还是Control都可以用,在System.Windows中有个叫做PresentationSource的类,通过FromDependencyObject这个方法,传入一个DependencyObject会得到类型为HwndSource的实例,然后就可以得到这个DependencyObject的句柄了,HwndSource除了可以获得句柄外还有AddHook等方法,功能比上一种强大.
1,使用WindowInteropHelper类可以获得Window的句柄,但这种方法有个局限性,它只接受类型为Window的参数,换句话说就是这种方法只能获得Window的句柄.
public IntPtr Handle { get { IntPtr handle = new WindowInteropHelper( this ).Handle; } }
2,然后在实际工作中有时我们需要得到控件的句柄,我们还有另外一个办法,不管是Window还是Control都可以用,在System.Windows中有个叫做PresentationSource的类,通过FromDependencyObject这个方法,传入一个DependencyObject会得到类型为HwndSource的实例,然后就可以得到这个DependencyObject的句柄了,HwndSource除了可以获得句柄外还有AddHook等方法,功能比上一种强大.
private IntPtr GetHandleByDependencyObject(DependencyObject dependencyObject) { HwndSource hwndSource = ( System.Windows.Interop.HwndSource )PresentationSource.FromDependencyObject( dependencyObject ); IntPtr handle = hwndSource.Handle; return handle; }
相关文章推荐
- ognl详解
- 手机网站开发相关介绍
- makefile 学习的点滴总结-(2)
- 现代程序设计 作业9
- 各字符集
- WPF 的FontFamily 列表
- 安卓电池电量的google介绍文档
- [转]存下来
- vs2010无法启动调试
- linux流量监控脚本
- When should we write our own copy constructor?
- Sharepoint 2013 安装部署系列篇 第二篇 -- SQL集群安装
- 遍历Map的四种方法
- 微信公众号推广的十个技巧
- (Relax ST1.7)POJ 1256 Anagram(求一个字符串在特殊规定下的全排列)
- VC画图函数
- Linux Make的有用选项
- 使用yum安装本地源
- Linux系统不可不知的命令:sudo
- 关于TableViewCell生成时dequeueReusableCellWithIdentifier的认识