原文地址:http://www.zdexe.com/program/201004/599.html

下面是各种Notification即通知。

通知1:WM_CANCELJOURNAL Notification

The WM_CANCELJOURNAL message is posted to an application when a user cancels the application's journaling activities. The message is posted with a NULL window handle.

当用户取消应用程序的日志记录活动时,WM_CANCELJOURNAL消息被传递给应用程序。该消息以空窗体句柄的方式来传递。

Syntax :WM_CANCELJOURNAL

Return Value 返回值

This message does not return a value. It is meant to be processed from within an application's main loop or a GetMessage hook procedure, not from a window procedure.

该消息没有返回值。这意味着在应用程序的主循环中被处理,或者在GetMessage钩子子程内被处理,而不是在窗体程序中被处理。

Remarks 备注

Journal record and playback modes are modes imposed on the system that let an application sequentially record or play back user input. The system enters these modes when an application installs a JournalRecordProc or JournalPlaybackProc hook procedure. When the system is in either of these journaling modes, applications must take turns reading input from the input queue. If any one application stops reading input while the system is in a journaling mode, other applications are forced to wait.

日志记录和回放模式是强加在系统上的模式,它们使应用程序序列化记录和回放用户的输入。当应用程序安装JournalRecordProc 和JournalPlaybackProc钩子子程时,系统就进入这样的模式。当系统处于这些模式中的任意一个时,应用程序必须轮流从输入队列读入输入。当系统处于记录模式时,如果任何一个应用程序停止读取输入,其他应用程序被迫要等待。

To ensure a robust system, one that cannot be made unresponsive by any one application, the system automatically cancels any journaling activities when a user presses CTRL+ESC or CTRL+ALT+DEL. The system then unhooks any journaling hook procedures, and posts a WM_CANCELJOURNAL message, with a NULL window handle, to the application that set the journaling hook.

为了保证系统的强壮性,一个应用程序不能因为其他应用程序的影响而失去响应。当用户按下时CTRL+ESC 或者CTRL+ALT+DEL时,系统自动取消任何记录行为,然后系统卸载任何记录钩子子程,向安装该记录钩子的应用程序传递一个WM_CANCELJOURNAL消息,该消息含有一个空窗体句柄,

The WM_CANCELJOURNAL message has a NULL window handle, therefore it cannot be dispatched to a window procedure. There are two ways for an application to see aWM_CANCELJOURNAL message: If the application is running in its own main loop, it must catch the message between its call to GetMessage or PeekMessage and its call to DispatchMessage. If the application is not running in its own main loop, it must set a GetMsgProc hook procedure (through a call to SetWindowsHookEx specifying theWH_GETMESSAGE hook type) that watches for the message.

WM_CANCELJOURNAL消息包含一个空窗体句柄,因此不能被分派给窗体程序。应用程序有2种方式可以查看WM_CANCELJOURNAL消息:如果应用程序在它自己的主循环下运行,必须在它调用GetMessage或者PeekMessage与DispatchMessage之间,捕获该消息。如果应用程序没有运行在自己的主循环下,必须设置tMsgProc钩子子程(通过指定WH_GETMESSAGE钩子类型调用dowsHookEx)来监视消息。

When an application sees a WM_CANCELJOURNAL message, it can assume two things: the user has intentionally cancelled the journal record or playback mode, and the system has already unhooked any journal record or playback hook procedures.

当应用程序查看WM_CANCELJOURNAL消息时,可以假设2件事情:用户已经特意取消了记录和回放模式,并且,系统已经卸载了任何记录或者回放钩子子程。

Note that the key combinations mentioned above (CTRL+ESC or CTRL+ALT+DEL) cause the system to cancel journaling. If any one application is made unresponsive, they give the user a means of recovery. The VK_CANCEL virtual key code (usually implemented as the CTRL+BREAK key combination) is what an application that is in journal record mode should watch for as a signal that the user wishes to cancel the journaling activity. The difference is that watching for VK_CANCEL is a suggested behavior for journaling applications, whereas CTRL+ESC or CTRL+ALT+DEL cause the system to cancel journaling regardless of a journaling application's behavior.

注意: 前面提到的组合键(CTRL+ESC 或者CRL+ALT+DEL)会导致系统停止记录。如果任何一个应用程序无响应,它们给用户提供了一种恢复的方式。虚拟键值VK_CANCEL(通常以 CTRL+BREAK来实现)是任何一个处于日志记录模式的应用程序都应该监视的,该值被用作用户希望取消记录活动的信号。不同之处在于,记录型应用程序监视VK_CANCEL是一种建议,但是CTRL+ESC 或者CTRL+ALT+DEL引发系统取消记录,忽略监视型应用程序的行为。

转载于:https://www.cnblogs.com/DuanLaoYe/p/5501689.html

钩子教程 - 原理(二十五) : 消息 -- WM_CANCELJOURNAL相关推荐

  1. SAP UI5 初学者教程之二十五 - 使用代理服务器解决 SAP UI5 应用访问远端 OData 服务的跨域问题试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...

  2. SAP UI5 应用开发教程之二十五 - 使用代理服务器解决 SAP UI5 应用访问远端 OData 服务的跨域问题

    在本教程的前一篇文章:SAP UI5 初学者教程之二十四 - 如何使用 OData 数据模型 我们试图在本地运行的 SAP UI5 应用(localhost:8080)里, 访问远端的 OData 服 ...

  3. Spring Boot + vue-element 开发个人博客项目实战教程(二十五、项目完善及扩展(前端部分))

    ⭐ 作者简介:码上言 ⭐ 代表教程:Spring Boot + vue-element 开发个人博客项目实战教程 ⭐专栏内容:零基础学Java.个人博客系统 ⭐我的文档网站:http://xyhwh- ...

  4. ArcGIS实验教程——实验二十五:大型商场选址经典案例

    ArcGIS实验视频教程合集:<ArcGIS实验教程从入门到精通>(附配套实验数据) 一.实验分析 合理的商场位置有利于商家营业,方便人们购物.商场选址问题需要考虑很多因素,如地理位置.居 ...

  5. Spring Boot教程(二十五)返回JSON格式

    在上述例子中,通过@ControllerAdvice统一定义不同Exception映射到不同错误处理页面.而当我们要实现RESTful API时,返回的错误是JSON格式的数据,而不是HTML页面,这 ...

  6. JavaFX UI控件教程(二十五)之Color Picker

    翻译自  Color Picker 本章介绍ColorPicker控件,提供其设计概述,并说明如何在JavaFX应用程序中使用它. JavaFX SDK中的颜色选择器控件是一个典型的用户界面组件,使用 ...

  7. Gstreamer加载插件原理(二十五)

    1.GStreamer是什么? 众所周知,Microsoft's Windows和Apple's MacOS对多媒体设备.多媒体创作.播放和实时处理等方面都有很好的支持,而Linux对多媒体应用一直略 ...

  8. WPF教程(二十五)WrapPanel

    WrapPanel用于一个接一个的排列子控件,以水平或者垂直方向,当空间不足时就会自动切换到下一行.适合于需要水平或者垂直排列控件且能自动换行的情况. 水平方向排列时,每一行所有子控件的高度都被统一成 ...

  9. WPF系列教程(二十五):绑定到非元素对象Source属性、RelativeSource属性、DataContext属性

    项目源码 数据绑定Binding Source属性 把TextBlock的Text属性绑定到静态的SystemFonts.IconFontFamily: <TextBlock Text=&quo ...

  10. SAP UI5 应用开发教程之二十九 - SAP UI5 的路由和导航功能介绍试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

最新文章

  1. Excel导入异常Cannot get a text value from a numeric cell解决
  2. 性能加速最高可达28倍!这个NLP工具包太NB了!
  3. golang中的sync.once
  4. 纯文本邮件转为html,将纯文本电子邮件转换为HTML邮件
  5. 关于luoguU67856 数列一题
  6. django的admin界面删除因为外键约束导致失败
  7. 递归Java_递归的Java实现
  8. 于变局中开新局!《2021中国SaaS市场研究报告》报告发布
  9. 怎么看我装的sql能不能用_深入浅出sql优化(三)之单表索引优化
  10. 微机个人笔记-半导体存储器(芯片的角度)概述
  11. WampServer无法直接打开myprojects的解决方法
  12. 妙笔生花!文字图像图形生成技术研究进展
  13. 海康ehome协议分析(2):预览请求
  14. t’触发器真值表和状态方程_T触发器的特性表.ppt
  15. module ‘sklearn.utils._openmp_helpers‘ has no attribute ‘__pyx_capi__‘
  16. Cannot load C:\Users\12778\AppData\Local\JetBrains\IntelliJIdea2021.1\tomcat\c0cf5d96-4221-48ee-b343
  17. 蓝桥杯java备赛Day3——跳马
  18. BlockingQueue drainTo()
  19. Solr初探(五)---Solr7.5利用DIH导入结构化数据构建索引
  20. Python渗透测试编程技术-拒绝服务攻击

热门文章

  1. 常用Keytool 命令
  2. maven打包时把依赖的jar包打进去
  3. Spring.net(一)----Spring.NET框架简介及模块说明
  4. 模板类的声明和定义要放在同一个文件
  5. 回顾云计算项目的得与失
  6. sql的left join 命令详解
  7. vista企业版和旗舰版中的Bitlocker功能概述
  8. anaconda 换源_Anaconda下安装tensorflow1.15过程记录
  9. android sh 指令_Android ADB Shell命令解析
  10. 【渝粤题库】广东开放大学mysql数据库及应用 形成性考核 - 副本 (5)