java获取某个文件夹下的所有文件,[代码]Delphi实现双击左CTRL键调用记事本

 2023-09-25 阅读 24 评论 0

摘要:要实现对双击左CTRL键的监控,必须玩钩子了。 代码很简单,新建VCL Form的工程,在窗体上放两个按钮,分别叫做 btnHook 和 btnUnHook。 java获取某个文件夹下的所有文件,调用就是 BeginHook 和 EndHook 这两个函数,窗体代码如下: un

要实现对双击左CTRL键的监控,必须玩钩子了。

代码很简单,新建VCL Form的工程,在窗体上放两个按钮,分别叫做 btnHook 和 btnUnHook。

Hook

java获取某个文件夹下的所有文件,调用就是 BeginHook 和 EndHook 这两个函数,窗体代码如下:

unit frmTestHookWinKey;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ShellAPI;typeTForm1 = class(TForm)btnHook: TButton;btnUnHook: TButton;procedure btnHookClick(Sender: TObject);procedure btnUnHookClick(Sender: TObject);procedure FormCreate(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}varKeyHook: HHook;HitTime: Cardinal;                                    // 击键的间隔时间HitThreshold: Integer;                                // 击键的间隔时间门限function HookKey(Code: integer; wParam: wParam; lParam: lParam): LRESULT; stdcall;
typePKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT;KBDLLHOOKSTRUCT = recordvkCode: DWORD;ScanCode: DWORD;Flags: DWORD;Time: DWORD;dwExtraInfo: DWORD;end;
begin// 如果左 CTRL 键按下if (Code = HC_ACTION) and (PKBDLLHOOKSTRUCT(lParam).vkCode = VK_LCONTROL) and (wParam = WM_KEYDOWN) then beginif HitTime > 0 then beginHitTime := GetTickCount - HitTime;                // 取得间隔时间if HitTime <= HitThreshold then begin      // 如果间隔时间在门限时间之内,则调用记事本WinExec('notepad.exe', SW_SHOWNORMAL);HitTime := 0;endelseHitTime := GetTickCount;endelseHitTime := GetTickCount;end;Result := CallNextHookEx(KeyHook, Code, wParam, lParam);
end;procedure BeginHook;
beginKeyHook := SetWindowsHookEx(13 {=WH_KEYBOARD_LL}, @HookKey, HInstance, 0);
end;procedure EndHook;
beginUnhookWindowsHookEx(KeyHook);
end;procedure TForm1.btnHookClick(Sender: TObject);
beginBeginHook;
end;procedure TForm1.btnUnHookClick(Sender: TObject);
beginEndHook;
end;procedure TForm1.FormCreate(Sender: TObject);
beginHitTime := 0;HitThreshold := 200;                                  // 200 ms
end;end.

既然调用记事本都搞定了,干些其他的事儿自然不在话下了。

这段代码完全可以封装为一个模块,将监控的按键、间隔时间及回调函数当作参数传入即可。

Technorati 标签: Delphi,Hook,CTRL

用记事本怎么执行java代码、转载于:https://www.cnblogs.com/journeyonmyway/archive/2011/07/12/2104360.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/95877.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息