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

win7放大镜源码_windows10放大镜快捷键_registerwindowmessage

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

win7放大镜源码_registerwindowmessage_windows10放大镜快捷键

{S1}简介

全局系统钩子允许应用程序截获用于其他应用程序的Windows消息。这一直是很难(不可能的,根据MSDN)在C#中实现。本文试图实现全局系统钩子,通过创建在C DLL包装,挂钩应用程序的消息队列投递消息。简单地说,这可以让你实现全球Windows挂钩的任何类型从托管代码。为什么全球的系统钩子和C#不要玩好一起

全局系统钩子。NET开发人员一直是一个问题。要理解为什么,我们首先要讨论如何挂钩工作在制度层面和Windows如何处理这些事件通知。

通常情况下,应用程序通过创建一个回调函数,并告知此功能的Windows实现挂钩。当Windows进程的一个hookable的事件,如鼠标移动或创建一个窗口,它会调用这个回调函数,挂钩的应用程序进行相应处理。本地钩子(应用程序时,钩子在同一进程中发生的其他事件),这个回调函数可以位于任何地方,和当地钩子可以很容易地写在C# - 快看周围CodeProject上揭示了几个例子。不幸的是,Windows是全局系统钩子,它允许一个进程拦截来自另一个进程的事件并非如此宽容。 Windows会坚持认为,对全局系统钩子回调函数位于DLL中。无论是C#中也不VB.NET能够生产的标准的Windows DLL,这意味着他们也无法处理全局系统钩子 - MSDN库中甚至明确表示不能在托管代码应用程序处理全局系统钩子。如何劝阻!

幸运的是,C#程序员是一群聪明和狡猾。迈克尔肯尼迪在他的CodeProject上的文章,想出了一个解决方法。使用C,他创造了一个DLL,它基本上是托管代码的包装工作。 C的DLL注册使用Windows的回调函数。当一个钩子通知抵达该回调,被称为托管代码的功能。使用这种技术,他能够捕获几个钩通知,如低级别的键盘和鼠标事件,。不过,他发现的问题是,Windows会改变执行上下文,当发送出一定的钩通知。当Windows勾住一个低级别的鼠标或键盘事件,它呼吁挂钩的应用程序的上下文内的任何挂钩的应用程序。但对于大多数其他事件,回调函数被称为迷上应用程序的背景下。这基本上意味着,他的包装功能无法使用大多数Windows挂钩。解决方法

我创造了我自己的解决方法这个问题,虽然你会看到下面,它与一些明确的警告。概括地说,了什么(如肯尼迪)创建一个C DLL,其中包含实际的回调函数。然而,DLL不只是作为一个托管代码的委托的包装。相反,当它接收到一个钩子通知,自定义的Windows托管的应用程序的Windows消息队列中的消息。然后可以在C#程序的WndProc事件中截获此消息。所以,就像一个窗口,经常收到类似WM_MOUSEMOVE消息,托管应用程序现在也收到这样的信息WILSON_HOOK_SHELL_WINDOWCREATED。项目

该代码由三个项目。首先,有GlobalCbtHook创建用于回调函数的DLL,C项目。其次,有GlobalHooksTest,一个简单的应用,旨在展示这个代码,它实现了WH_SHELL和WH_CBT钩子。这三个项目的第三和最酷的是TransparencyMenu。这也是一个示范项目,显示实际对全局系统钩子的实际应用。GlobalCbtHook - DLL项目

这个项目看似简单的。然而,有一些怪癖我的编程,已创建为您的应用程序中的一些错误潜力,如下所述。另外一个需要注意:一些小的例外,所有的类似命名的DLL中的函数做同样的事情,只是为不同类型的钩子。registerwindowmessage也就是说,InitializeCbtHook和InitializeShellHook以同样的方式工作 - 所以在下面我解释,我用ABC作为一种通用钩。警告:SetProp和GetProp


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

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

    • 神谷明
      神谷明

      我们感到不耻与蔑视

    • 姬角
      姬角

      把一切问题都理解为经济问题

    • 李双丹
      李双丹

      感觉烊烊很放松

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