b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

win7放大镜源码_windows10放大镜快捷键_registerwindowmessage(3)

电脑杂谈  发布时间:2017-02-01 19:27:45  来源:网络整理

我的代码使用RegisterWindowMessage函数。这是一个API函数生成一个唯一的消息ID,可以使用多个应用程序之间。当一个应用程序寄存器具有特定名称的消息,任何其他应用程序注册一个相同名称的消息,会得到相同的消息ID响应。 DLL使用消息由该函数生成的ID发布的所有消息。因此,托管代码也必须调用这个函数,知道消息的ID中的WndProc观看。里面的DLL

C DLL中包含的代码来处理8个不同类型的钩子。如果您愿意,您应能够遵循的模式,并轻松地创建额外的代码来处理其他的钩子类型。对于每种类型的钩子,有三个DLL中的函数。这三个功能更或多或少之间的所有不同的钩子类型相同。

InitializeAbcHook是从托管代码调用导出的函数。第一个参数是线程ID挂钩。设置为零,将钩的所有进程 - 给你一个全局钩子。您也可以使用这个只钩从一个线程,在许多情况下将远远超过挂接在所有线程的事件的有效的事件。第二个参数是挂钩事件将播出窗口的句柄。这应该是一个窗体或控件的句柄。 InitializeAbcHook的功能检查,看如果消息处理已存储(又名,另一个应用程序已经挂接使用我们的DLL),然后将其存储处理,使用这条线终于安装钩子:

hookAbc = SetWindowsHookEx(WH_ABC, (HOOKPROC)AbcHookCallback, 

                                g_appInstance, threadID);

UninitializeAbcHook只是删除了钩。确保您的托管代码应用程序退出前调用 - 如果你不这样做,DLL将保持挂钩,即使您的应用程序(这是应该接受的挂钩)已经结束。这可能会导致一些重大问题,以及不必要的降低性能。AbcHookCallback

是实际的回调函数,并有点不同取决于钩型。对于最简单的钩子,像鼠标和键盘钩子,这个功能只是必要的信息发送到挂钩的应用程序的队列,然后继续调用CallNextHookEx挂钩链。对于像CBT或壳牌钩子,有可能发生的事件的多种类型 - 如激活或CREATEWND。确定哪种类型的子钩被称为回调函数,然后提出了相应的事件。对于CallWndProc和getmsg,有太多的数据发送到挂钩的应用程序只使用一个消息。对于这两个钩子,毕竟,有四件的数据,我们想知道在我们的托管应用程序:迷上窗口的句柄,就迷上了消息,和的lParam和wParam的值 - 但是,当发送自己的挂钩的应用程序的消息,我们只能在lParam和wParam参数发送数据。因此,这两个回调函数发送两个消息,一个手柄和截获消息,截获的lParam和wParam的。他们也有一个检查,以防止无限递归 - GetMsg消息发送到挂钩的应用程序,在发布的消息相同的回调函数,截获。托管代码:GlobalHooks.cs

我已经创建了一类称为GlobalHooks作为一个管理应用程序和DLL之间的中介功能,因此很容易在自己的项目实施的全局钩子。类包含一个抽象的内部类称为钩,以及8个钩的子类,每个钩支持的类型之一。

要使用自己的代码中的全局系统钩子,要做的第一件事是创建的GlobalHooks类的一个实例:

    private GlobalHooks _GlobalHooks;

当你实例化这个类,你必须将它传递一个窗口句柄:

    _GlobalHooks = new GlobalHooks(this.Handle);

,您还需要重写WndProc函数让GlobalHooks函数来处理所有传入的邮件。这ProcessWindowMessage功能检查从DLL的消息,表明一个钩子通知已提出。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-29963-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...