摘要:
昨天晚上,有个朋友告诉我他想屏蔽掉键盘的WIN键,问我有没有简单的办法,回来就做了一个简单的示例。这个示例中使用到一个低级的键盘钩子,它是从windows2000引进的,所以必须在win2000以上的版本才被支持,而且关于低级键盘钩子的部分在delphi中并没有引入。所以对照C语言的资料将它转换为delphi语言的格式,下面是使用delphi格式声明的一个常量和一个数据结构:const WH_KEYBOARD_LL = 13;typePBDLLHOOKSTRUCT = ^TBDLLHOOKSTRUCT;TBDLLHOOKSTRUCT = recordvkCode: DWORD;scanCode 阅读全文
摘要:
如果你是基于Windows操作系统做系统集成的,你可能希望你的最终产品独占系统资源。你希望规范用户行为,比如你不希望用户通过按Ctrl+Alt+Del终止某个进程,或者按下Win键弹出开始菜单,或者按下Alt+Tab组合键切换到别的应用程序。笔者已有相关一篇文章《Win2K/NT下屏蔽Ctrl+Alt+Del的响应》,介绍了如何通过GINA编程接口屏蔽Ctrl+Alt+Del的响应。作为续篇,本文将继续介绍屏蔽Win键和Alt+Tab组合键的方法。 由于这些按键的响应是系统级的,我们不可能简单地通过某个程序来控制它们。因此,我们需要使用微软提供的另外一种编程接口——钩子(Hook)。大... 阅读全文
摘要:
这个Delphi单元主要是把键盘按键保存在堆栈线性队列中,可以在软件界面自己查看按键内容,同时还保存了按键信息在c:\logfiles.txt的文本文件中,方便以后的查看。。。安装全局钩子函数 KeyLogHook := SetWindowsHookEx(WH_jOURNALRECORD,KeyLogProc,HInstance,0);卸载钩子函数是 UnhookWindowsHookEx(KeyLogHook); 使用过程中好像有点问题,软件开机自启动的时候,会让Lingoes的启动无法正常启动,提示内存访问错误什么的,有时候莫名其妙钩子会失效,截获不了键盘按键,可能用dll的好点吧。。.. 阅读全文
摘要:
小读了一下《Delphi下深入Windows核心编程》感觉里面的东西写得还算可以,至少有学到东西于是整理了一下书中的代码,并加上注注释发上来首先是最重要的键盘钩子使用的DLL:unit UnitDll;interfaceuses Windows;const BUFFER_SIZE = 16 * 1024; // 文件映射到内存的大小const HOOK_MEM_FILENAME = 'MEM_FILE'; // 映像文件名const HOOK_MUTEX_NAME = 'MUTEX_NAME'; // 互斥名type // 共享结构 TShared = reco 阅读全文
摘要:
实现适时监视键盘,并将按键信息保存在TXT文件中的程序 Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的。而钩子是Windows系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,来完成普通应用程序难以实现的功能。钩子的种类很多,每种钩子可以截获并处理相应的消息,如键盘钩子可以截获键盘消息,外壳钩子可以截取、启动和关闭应用程序的消息等。本文在VC6编程环境下实现了一个简单的键盘钩子程序,并对Win32全局钩子的运行机制、Win32 DLL的特点、VC6环境下的MFC DLL以及共享数据等相关知识进行了简单的阐述。 一.Win32全局钩子 阅读全文
摘要:
引言 在科研生产中对研制、调试操作的记录是非常有必要而且是有很重要价值的。通过对记录信息的分析,可以在事故发生后准确的分析出事故的起因、操作是否存在失误等许多重要线索。通常需要记录的信息是多种多样的,如环境温度记录、软件运行记录、文件访问记录等等。这里将以键盘信息记录为例来讲述类似的实验信息自动记录的一般实现方法。 由于需要记录当前系统下所有应用程序的键盘录入记录,因此必须采取某种特殊的技术来实现本进程(监视程序)对外部进程键盘操作信息的获取。这种技术便是本文将要论述的核心--系统全局钩子。本文下面将对Win32平台下全局钩子的运行机制进行介绍并给出了一个具体的由VC++6.0编写的捕获键.. 阅读全文
摘要:
全局热键的意思是指,当程序并不是当前窗口的时候,按下热键也可以响应。以前做这种功能用过一种方法,是编写一个键盘钩子的DLL,过滤系统中所有的键盘消息,当然还要再写一个程序去调用它。这种方法做起来麻烦了一起,不过倒是黑客窃取键盘密码雏形。这里介绍的方法是利用windows api直接注册热键,分三步走:1、增加一个全局Atom2、为Atom注册一个全局热键(这样相应的键盘消息就会分配给本程序了)3、写相应的HotKey响应处理代码再进一步,如果需要让用户自定义热键,就需要在界面上放一个标准的THotKey控件,这个控件允许用户自己输入热键,不过它的输出是TShortCut,在Menus单元中有几 阅读全文