最好使用相同的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?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)