界面开发(二)--- NativeWindow

本文深入探讨.NET Framework中的NativeWindow类,解析其作用机制,并通过实例展示如何使用该类实现窗体事件的Hook。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     NativeWindow是.net Framework提供的一个底层的类。微软官方的解释为:NativeWindow Provides a low-level encapsulation of a window handle and a window procedure.说道这些也相当于没有说,因为NativeWindow到底是干什么的也没有说清楚,意思就是一个低级别的对窗体句柄和窗体过程的一个封装。后来查询了很多的资料才明白了其中的意义。

     资料来源:

     http://www.diybl.com/course/4_webprogram/asp.net/netjs/2007921/72804.html

     这个讲解的是《利用NativeWindow监视WndProc消息》,这篇内容比较长,而且页数比较多,经过自己努力和耐心,终于完成了其中的例子,代码下载地址为:/Files/zhjp11/皮肤/NativeWindowApplication.rar

     http://www.codeproject.com/KB/dialog/OpenFileDialogEx.aspx

     这篇来自CodeProject,老外写的代码就是比较有水平。将Windows 的OpenFileDialog子类化,显示成了自定义的OpenFileDialog,而且添加了很多的事件。相当的佩服。

     经过这两篇的细心阅读,终于了解了NativeWindow的作用,NativeWindow就是提供了底层的封装,提供了AssignHandle和RealeseHandle这两个方法,主要就是对注册了窗体句柄的窗体进行Hook,将窗体的事件经过自己处理后交给Windows处理。使用Refector.net查看了NativeWindow中AssignHandle这个方法,也验证了我这个说法。在AssignHandle中有这样一段代码:

userDefWindowProc  =  UnsafeNativeMethods.GetProcAddress( new  HandleRef( null ,UnsafeNativeMethods.GetModuleHandle( " user32.dll " )), lpProcName); 

 

     对Win32开发的也许都知道这段代码的意义,他也是Hook的一种。不过是更加高级的Hook方式。这里就不在细说,我们现在只要知道他可以对我们进行注册的窗体进行Hook,可以将自己的代码加载到我们想要的位置就可以了。

     然后我就使用NativeWindow获取所有的窗体的所有事件,然后输出Hook到的时间,结果图如下:

                                              

     下载代码如下:/Files/zhjp11/皮肤/SkinEngines20100319.rar

转载于:https://www.cnblogs.com/zhjp11/archive/2010/03/19/1689957.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值