WPF获取控件的句柄
在WinForm中,获得句柄是一件很容易的事情,This.Handle或者Control.Handle就可以,最近在WPF的开发中发现找不到这个属性,一番查找资料后找到了两种方式.
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;
}
WPF获取控件的句柄的更多相关文章
- [WPF]获取控件间的相对位置
		
原文:[WPF]获取控件间的相对位置 [WPF]获取控件间的相对位置 周银辉 我们知道WPF有着比较灵活的布局方式,关于某个控件的坐标,Canv ...
 - 获取WPF窗体/控件的句柄/当前进程的句柄
		
1.在WPF中,获取当前窗体的句柄与WINFORM中不一样: WINFORM直接获取:this.Handle----------this是窗体的类名,handle就是句柄. 2.WPF中先引用命名空间 ...
 - WPF 获取控件模板中的控件
		
DG是控件名称public T GetVisualChild<T>(DependencyObject parent, Func<T, bool> predicate) wher ...
 - WPF:获取控件内的子项
		
一.界面内容(部分:仅供参考) <Window> <Window.Resources> <!--工具数据源--> <XmlDataProvider x:Key ...
 - WPF获取控件内部的ScrollViewer,并控制ScrollViewer操作
		
//获取内部 ScrollViewer方法 public static T FindVisualChild<T>(DependencyObject obj) where T : Depe ...
 - WPF线程中获取控件的值和给控件赋值
		
WPF中使用线程操作控件,按平常的操作方法操作的话会报异常:调用线程无法访问此对象,因为另一个线程拥有该对象.所以我们要使用Dispatcher类的BeginInvoke()与Invoke()方法.B ...
 - WPF默认控件模板的获取和资源词典的使用
		
一.获取默认的控件模板 WPF修改控件模板是修改外观最方便的方式,但是会出现不知道原来的控件的模板长什么样,或者想用来参考的,下面分享一下获取某控件默认控件模板的方式(已Button为例): 1.创建 ...
 - python通过win32api轻松获取控件的属性值
		
1.如何利用句柄操作windows窗体 首先,获得窗体的句柄 win32api.FindWindows() 第二,获得窗体中控件的id号,spy++ 第三,根据控件的ID获得控件的句柄(hwnd) ...
 - WPF常用控件应用demo
		
WPF常用控件应用demo 一.Demo 1.Demo截图如下: 2.demo实现过程 总体布局:因放大缩小窗体,控件很根据空间是否足够改变布局,故用WrapPanel布局. <ScrollVi ...
 
随机推荐
- 几本关于PHP安全的书
			
几本关于PHP安全的书: Essential PHP Security php architect‘s Guide to PHP Security Pro PHP Security Securing ...
 - sql 中条件in参数问题
			
经常遇到条件为in的模糊查询,sql传参可以在service中直接传递参数,不必使用占位符 select * from ud_order where status in ("+status+ ...
 - LeetCode初体验—twoSum
			
今天注册了大名鼎鼎的LeetCode,做了一道最简单的算法题目: Given an array of integers, return indices of the two numbers such ...
 - centos 6.4 Apache 配置 flv mp4.h264 流媒体拖动
			
http://blog.csdn.net/xst686/article/details/9763995 加入流媒体扩展后要重启 httpd flv 流媒体 <textarea style=&qu ...
 - anyConnect连接VPN后无法上网
			
最近想使用学校图书馆的VPN, 使用的是anyConnect的客户端.每次连接后都显示连接成功,但是马上就无法上网了. 开始以为是win10系统不兼容的问题,在虚拟机里面用win7测试可以成功,但是因 ...
 - Asp.net基础知识
			
1.[项目结构] 1.1文件后缀: .cs 源文件(程序代码) .csproj 项目文件(管理文件项) .sln 解决方案文件(管理项目) .config ...
 - xmlDoc.SelectNodes用法(获取不到节点时注意事项)
			
注:以下举例仅针对xml自定义了命名空间的情况,如果是其他情况,请参照他人博客~ using System;using System.Collections.Generic;using System. ...
 - 第九篇、CSS布局
			
<!--css布局 标准流:从上到下 从左到右 脱离标准流:(浮在父控件的最左边或者最右边)(类似ios在window上添加的控件) 1.float: 2.position: absolute( ...
 - mac安装软件运行提示「xxx.app已损坏,打不开.你应该将它移到废纸篓」的解决办法
			
「xxx.app已损坏,打不开.你应该将它移到废纸篓」,其实并非你安装的软件已损坏,而是Mac系统的安全设置问题,往往这些软件可能是经过了汉化或者破解,所以被Mac认为「已损坏」,那么解决方法就是临时 ...
 - HDU 4762 Cut the Cake
			
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4762 题目大意:将n个草莓随机放在蛋糕上,草莓被看做是点,然后将蛋糕平均切成m份,求所有草莓在同一块蛋 ...