上一页 1 ··· 152 153 154 155 156 157 158 159 160 ··· 215 下一页
摘要: //声明: GetNextWindow( hWnd: HWND; {指定的窗口句柄} uCmd: UINT {指定的关系选项} ): HWND; {失败返回0; 成功返回符合的窗口句柄} //uCmd 可选值: GW_HWNDNEXT = 2; {同级别 Z 序之下} GW_HWNDPREV = 3; {同级别 Z 序之上} 这是 GetWindow 的简化. 阅读全文
posted @ 2008-02-28 14:45 万一 阅读(5946) 评论(3) 推荐(0)
摘要: //声明: GetTopWindow( hWnd: HWND; {指定的窗口句柄} ): HWND; {失败返回0; 成功返回最顶层的子窗口句柄} 这和用 GetWindow 函数使用 GW_CHILD 参数时应该是一样的, 测试一下: var h1,h2: HWND; begin h1 := GetTopWindow(GetDesktopWindow); h... 阅读全文
posted @ 2008-02-28 14:30 万一 阅读(15806) 评论(7) 推荐(0)
摘要: //声明: GetWindow( hWnd: HWND; {指定的窗口句柄} uCmd: UINT {指定的关系选项} ): HWND; {失败返回0; 成功返回符合的窗口句柄} //uCmd 可选值: GW_HWNDFIRST = 0; {同级别第一个} GW_HWNDLAST = 1; {同级别最后一个} GW_HWNDNEXT = 2; {同级别下一个} GW_H... 阅读全文
posted @ 2008-02-28 14:02 万一 阅读(15282) 评论(7) 推荐(0)
摘要: Integer 类型是 32 位的, 有 4 个字节, 现在我们需要能够提取出其 32 位中的某一位. 但 Delphi 最小的整数类型也是一个字节(8位)的: Byte(无符号)、Shortint(有符号). 要不先从提取一个字节开始: var i: Integer; b: Byte; begin i := MaxInt; {Integer 的最大值} ShowMessage(... 阅读全文
posted @ 2008-02-27 22:28 万一 阅读(5835) 评论(8) 推荐(1)
摘要: SetWindowsHookEx 函数的第一个参数表示钩子类型, 共有 14 种选择, 前面我们已经用过两种: WH_KEYBOARD、WH_MOUSE. 系统会为每一种类型的钩子建立一个表(那就是 14 个表), 譬如某个应用程序启动了键盘钩子, 我们自己的程序也启动了键盘钩子, 同样是键盘钩子就会进入同一个表. 这个表(可能不止一个, 可能还会有鼠标钩子等等)就是传说中的"钩子链". 假... 阅读全文
posted @ 2008-02-27 00:02 万一 阅读(9307) 评论(21) 推荐(0)
摘要: 分两步: 一、建立 DLL, 并在 DLL 实现钩子的设置、释放和钩子函数; 二、再建一个工程调用测试. 第一步: 做 DLL 先建立一个 DLL 工程, 自动初始的代码如下(去掉注释了): library Project1; uses SysUtils, Classes; {$R *.res} begin end. //把工程保存为 MyHook.dpr, 并实现如下... 阅读全文
posted @ 2008-02-26 14:37 万一 阅读(10286) 评论(56) 推荐(0)
摘要: 钩子函数虽然不多, 但其参数复杂, 应该从参数入手才能深入进去. UnhookWindowsHookEx 只需要 SetWindowsHookEx 返回的钩子句柄作参数, 这个简单; 先看看 SetWindowsHookEx 的声明: SetWindowsHookEx( idHook: Integer; {钩子类型} lpfn: TFNHookProc; {函数指针} hmo... 阅读全文
posted @ 2008-02-26 10:38 万一 阅读(6813) 评论(9) 推荐(0)
摘要: //声明: GetForegroundWindow: HWND; //举例: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = clas... 阅读全文
posted @ 2008-02-26 09:52 万一 阅读(13204) 评论(21) 推荐(0)
摘要: 回复 maxcool 的问题: {要有个 Memo 接受数据} procedure TForm1.Button1Click(Sender: TObject); var h: HWnd; p: array[0..254] of char; begin h := GetWindow(Handle, GW_HWNDFIRST); while h 0 do begin i... 阅读全文
posted @ 2008-02-25 21:19 万一 阅读(12739) 评论(24) 推荐(1)
摘要: 目前对钩子的理解: 譬如我们用鼠标在某个窗口上双击了一次, 或者给某个窗口输入了一个字母 A; 首先发现这些事件的不是窗口, 而是系统! 然后系统告诉窗口: 喂! 你让人点了, 并且是连续点了两鼠标, 你准备怎么办? 或者是系统告诉窗口: 喂! 有人向你家里扔砖头了, 不信你看看, 那块砖头是 A. 这时窗口的对有些事件会忽略、对有些事件会做出反应: 譬如, 可能对鼠标单击事件忽略, ... 阅读全文
posted @ 2008-02-25 15:34 万一 阅读(23896) 评论(52) 推荐(5)
上一页 1 ··· 152 153 154 155 156 157 158 159 160 ··· 215 下一页