SetWinEventHook和SetWindowsHookEx都可以指定钩子函数(hook function)来截取别的进程中的消息,但是他们之间有一些不同。
  1. ?SetWindowsHookEx有两种钩子函数,一种是全局钩子(global hook),另一种是线程钩子(thread hook)。全局钩子能够截取所有线程的消息,但是全局钩子函数必须存在于一个dll中。线程钩子只能截取属于当前进程中的线程的消息,钩子函数不需要放 在dll中。SetWinEventHook也有两种钩子函数,一种是进程内钩子(in-context hook),另一种是进程外钩子(out-of-context hook)。进程内钩子函数必须放在dll中,将被映射到所有进程中。进程外钩子函数不会被映射到别的进程中,所以也不需要被放到dll中。不管进程内或 进程外钩子都能截取到所有进程的消息,区别仅是进程内钩子效率更高。
  2. SetWindowsHookEx 和SetWinEventHook两种方法截取的消息的类型不一样。SetWindowsHookEx能截取所有WM_开头的消息。而 SetWinEventHook截取的消息都是EVENT_开头的,这些消息所有都是跟对象的状态相关的,所以它无法获取根鼠标键盘相关的消息。
  3. SetWindowsHookEx设定的全局钩子必须被注入到别的进程中,所以就无法截取到一些有限制的进程的消息,比如命令行窗口(console window)。而SetWinEventHook的进程外钩子就没有这个限制。

转载于:https://www.cnblogs.com/hgy413/archive/2010/11/25/3693679.html

SetWinEventHook和SetWindowsHookEx的异同[转]相关推荐

  1. 由MessageBox和AfxMessageBox的使用异同所感

    我记得刚开始学图形界面编程的时候,接触的最早的一个函数应该就是MessageBox,之前都一直是控制台程序,突然能运行蹦出一个对话框感觉还是很新鲜的.当时还利用MessageBox写一些恶搞程序,利用 ...

  2. ie和firefox操作table对象的异同

    2019独角兽企业重金招聘Python工程师标准>>> ie和firefox下操作table对象的异同[测试浏览器版本:ie为8,9,firefox为2.0] 1)在ie下,tabl ...

  3. 数据库和区块链的异同

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 前几日有好友询问我关于数据库和区块链的异同,我觉得这个问题非常好,今天刚好有空把当时的聊天情况回忆了一下,可能很多人都有 ...

  4. pandas中DataFrame的ix,loc,iloc索引方式的异同

    pandas中DataFrame的ix,loc,iloc索引方式的异同 1.loc: 按照标签索引,范围包括start和end 2.iloc: 在位置上进行索引,不包括end 3.ix: 先在inde ...

  5. 2分钟读懂Hadoop和Spark的异同

    谈到大数据,相信大家对Hadoop和Apache Spark这两个名字并不陌生.但我们往往对它们的理解只是提留在字面上,并没有对它们进行深入的思考,下面不妨跟我一块看下它们究竟有什么异同. 解决问题的 ...

  6. 关于commonjs,AMD,CMD之间的异同

    1.简介 随着前端业务复杂度的增加,模块化成为一个大的趋势.而在ES6还未被浏览器所支持的情况下,commonjs作为ES6中标准模块加载方案,在客服端中的支持情况并不好,现在在客服端中有2中模块化的 ...

  7. Oracle对sum求和进行if,Excel中sumif函数和sumifs函数进行条件求和的异同

    sumif函数和sumifs函数是Excel2007版本以后新增的函数,功能十分强大,实用性很强,本文介绍下Excel中通过用sumif函数和sumifs函数的条件求和的异同,并对函数进行解释,以便各 ...

  8. String、StringBuffer、StringBuilder三者的异同

    String.StringBuffer.StringBuilder String.StringBuffer.StringBuilder三者的异同 StringBuffer.StringBuilder的 ...

  9. R语言应用substr函数和substring函数抽取(extract)、删除(Remove)、替换、匹配(Match)特定的字符串、并对比两个函数的异同、grepl检查子字符串是否存在于字符串中

    R语言应用substr函数和substring函数抽取(extract).删除(Remove).替换(Replace).匹配(Match)特定的字符串.并对比substr函数和substring函数在 ...

最新文章

  1. 什么是类型别名?什么是潜在类型?
  2. 普中28335开发攻略_TMS320F28335项目开发记录1_CCS的使用介绍
  3. tensorflow 之 ValuError: At least two variables have the same name: bottom/bn1/beta_power0 等
  4. 异步与并行~ReaderWriterLockSlim实现的共享锁和互斥锁
  5. c++ socket线程池_从连接器组件看Tomcat的线程模型——NIO模式
  6. Hessian Spring相关使用的简单例子
  7. 【UOJ78】二分图最大匹配
  8. 坚果云 linux 脚本,深度操作系统Deepin安装坚果云
  9. linux6的关机快捷键是,LINUX关机快捷键是什么?
  10. 计算机组成原理(白中英) 第五章 课后题答案
  11. 使用微软原生工具,反编译DLL并修改后再生成DLL
  12. 浏览器播放视频时蓝牙耳机自动关机
  13. 20155322 2016-2017-2 《Java程序设计》第7周学习总结
  14. 拳皇觉醒服务器维护,拳皇全明星拳魂觉醒手游9月26日更新公告_拳皇全明星拳魂觉醒9月26日更新了什么_玩游戏网...
  15. [视觉Slam十四讲(2)踩坑记录]第3讲:Fatal error :Eigen/core没有那个文件或目录
  16. [阿里云RocketMQ_Exception]valid resource owner failed.
  17. 华硕电脑重装系统后fn组合键部分屏幕无显示
  18. TX云游戏平台 WeGame 1.0.3.8中文版
  19. 鼠标灵敏度调多少合适
  20. <<算法很美>>——(三)十大排序算法(上)

热门文章

  1. Laravel Carbon获取 某个时间后N个月的时间
  2. 原创:Spring整合junit测试框架(简易教程 基于myeclipse,不需要麻烦的导包)
  3. 循序渐进DB2 (第2版)——DBA系统管理、运维与应用案例
  4. 你真的了解分层架构吗?——写给被PetShop毒害的朋友们 (转)
  5. Elementui 自定义loading
  6. javascript实现数组深复制的方法
  7. Vue「五」—— 动态组件、插槽、自定义指令
  8. CSDN2013博客之星评选(求投票支持)
  9. OpenCV3学习(11.2)LK光流法原理及opencv实现
  10. OpenCV3学习(4.3)——图像形态学(膨胀,腐蚀)