WinProcEvent一个或多个SetWinEventHookcallback?

WinProcEvent一个或多个SetWinEventHookcallback?,第1张

概述WinProcEvent一个或多个SetWinEventHookcallback?

最好使用相同的WinEventProc()callback函数注册多个SetWinEventHook()函数,并在函数的代码中单独处理每个事件types,或者按照我想要的那样处理。

编辑 :我张贴了三个不同的场景,我想知道哪一个是最好的,为什么?

情况1:单一回叫,单个委托,多个挂钩

static WinEventDelegate SingleCallbackDelegate = new WinEventDelegate(SingleCallback); public static voID SingleCallback(IntPtr hWinEventHook,uint eventType,IntPtr hwnd,int idobject,int IDChild,uint DWEventThread,uint DWmsEventTime) { switch(evenType) : case eventID1 : // do work related to event 1 case eventID2 : // do work related to event 2 // etc. } voID SetHooks() { SetWinEventHook(eventID1,eventID1,IntPtr.Zero,SingleCallbackDelegate,flags); SetWinEventHook(eventID2,eventID2,flags); }

情况2:单一回叫,多个代表,多个挂钩

是否可以在远程windows机器上创build性能计数器?

错误模块名称:vrfcore.dll,版本:6.3.9600.16384和exception代码:0x80000003

使用与DLL相同的EXE应用程序到其他应用程序

通过TeamvIEwer连接时,WPF应用程序崩溃

如何合并两个列表的值

static WinEventDelegate CallbackDelegate1 = new WinEventDelegate(SingleCallback); static WinEventDelegate CallbackDelegate2 = new WinEventDelegate(SingleCallback); public static voID SingleCallback(IntPtr hWinEventHook,CallbackDelegate1,CallbackDelegate2,flags); }

案例3:多个callback,多个代理,多个钩子

static WinEventDelegate CallbackDelegate1 = new WinEventDelegate(Callback1); public static voID Callback1(IntPtr hWinEventHook,uint DWmsEventTime) { // do work related to event 1 } static WinEventDelegate CallbackDelegate2 = new WinEventDelegate(Callback2); public static voID Callback1(IntPtr hWinEventHook,uint DWmsEventTime) { // do work related to event 2 } voID SetHooks() { SetWinEventHook(eventID1,flags); }

.net应用程序在linux上运行吗?

在.NET中的远程机器上获取环境variables的真实值

需要UAC保护资源的整个列表以标准用户身份运行我的应用程序(unlevated)

input语言挂钩

如何获取mscorlib.ni.lib(.Net Framework 3.5)的PDB文件

第二个片段没有意义,一个委托已经足够传递给多个SetWinEventHook()调用。 有一点可能是第三个片段,不同的委托对象是必需的,因为回调目标方法是不一样的。 我能想到的唯一好处是可以使方法不那么强壮,或者自定义特定进程或线程的回调行为。

务必记住,SetWinEventHook()是非常昂贵的,在回调到你的程序中会涉及很多开销,这会对桌面上运行的其他进程的行为产生重大影响。 您在回调中所做的任何事情都需要花费时间,这样也会使其他进程无法响应。 所以限制你所做SetWinEventHook()调用的次数自然是一个强有力的优化目标。

你可以看到这个函数声明的方式,它鼓励你使用一个小范围的eventMin和eventMax值。 windows可以使用一个简单的过滤器来计算昂贵的回调是不必要的。 如果您的回调确实只对少数事件感兴趣,那么多次调用SetWinEventHook 确实有意义。 你仍然坚持第一个片段,因为switch语句应该很小。

总结

以上是内存溢出为你收集整理的WinProcEvent一个或多个SetWinEventHookcallback?全部内容,希望文章能够帮你解决WinProcEvent一个或多个SetWinEventHookcallback?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1278956.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存