如题
解决方案 »
- 使用inno setup打包时 如何关闭已运行的软件
- 紧急求救oracle中图片存取问题,谢谢各位
- 数据修改的问题?
- treeview的使用
- 如何在DBchart图表中,点击相应的柱子后可以链接到对应的明细表中,请问可以怎样实现?
- 请问IBM 的ThinkPad600 是否支持10G以上的硬盘?我有个10G的硬盘,其显示只有7.5G.这是为什么
- 如何用NMFTP控件写下载某日在ftp服务器上创建的文件的代码?
- 怎么删除一个字段下的内容?
- 如何判断Paradox数据库中的某一条记录的Memo类型字段是否为空!!!!!!!!!!!!!!!
- TADODataSet删除行,该行为什么消失了,而不是状态为usDeleted
- 关于打印发票字体的问题
- 求助!SQL查询统计?
我的键盘上怎么没有这三个键!
晕死,你是啥年代的键盘?????
呵呵,我同意做钩子
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
KBDLLHOOKSTRUCT=record
vkCode:DWORD;
scanCode:DWORD;
flags:DWORD;
time:DWORD;
dwExtraInfo:ulong;
end;
LPKBDLLHOOKSTRUCT=^KBDLLHOOKSTRUCT;
var
Form1: TForm1;
//定义句柄
OldHook:HHOOK;// 钩子 句柄
implementation{$R *.dfm}
const
LLKHF_ALTDOWN=$20;
WH_KEYBOARD_LL= 13;//键盘钩子 封锁 windows 热键
function KeyProc(code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall;
var
pkbhs:LPKBDLLHOOKSTRUCT;
begin
Result:=1;
if (code < 0) then
begin
Result:= CallNextHookEx(OldHook,code, wParam, lParam);
exit;
end; pkbhs := LPKBDLLHOOKSTRUCT( lParam); if (pkbhs.vkCode=91) then//封锁win键
begin
exit;
end; if (pkbhs.vkCode=VK_ESCAPE) and (GetAsyncKeyState(VK_CONTROL)<0) then
begin
exit; //封锁 CTRL+ESC
end; if (pkbhs.vkCode=VK_TAB) and (( LLKHF_ALTDOWN and pkbhs.flags)>0) then
begin
exit; //封锁 ALT+TAB
end; if (pkbhs.vkCode=115) and ((pkbhs.flags and LLKHF_ALTDOWN)>0) then
begin
exit; //封锁 ALT+F4
end; if (pkbhs.vkCode=VK_ESCAPE) and ((pkbhs.flags and LLKHF_ALTDOWN)>0) then
begin
exit; //封锁 ALT+ESC
end; if (pkbhs.vkCode=VK_SPACE) and (GetAsyncKeyState(VK_CONTROL)<0) then
begin
exit; //封锁 CTRL+ ' '
end;
if (pkbhs.vkCode=VK_SNAPSHOT) then
begin
exit; //封锁 Print Screen
end;
if(pkbhs.vkCode=164) then
begin
exit;
end;
Result:=CallNextHookEx(OldHook, code, wParam, lParam);
end;//---------------------------------------------------------------------------procedure TForm1.FormCreate(Sender: TObject);
begin
OldHook:=0;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
if OldHook>0 then
UnhookWindowsHookEx(OldHook);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
//注册 钩子
OldHook := SetWindowsHookEx(WH_KEYBOARD_LL {WH_KEYBOARD_LL},
KeyProc, HInstance, 0);
if (Sender is TButton) then
TButton(Sender).Enabled:=not (OldHook>0);
end;end.
VK_LBUTTON 01 Left mouse button
VK_RBUTTON 02 Right mouse button
VK_CANCEL 03 Control-break processing
VK_MBUTTON 04 Middle mouse button (three-button mouse)
? 05-07 Undefined
VK_BACK 08 BACKSPACE key
VK_TAB 09 TAB key
? 0A-0B Undefined
VK_CLEAR 0C CLEAR key
VK_RETURN 0D ENTER key
? 0E-0F Undefined
VK_SHIFT 10 SHIFT key
VK_CONTROL 11 CTRL key
VK_MENU 12 ALT key
VK_PAUSE 13 PAUSE key
VK_CAPITAL 14 CAPS LOCK key
? 15-19 Reserved for Kanji systems
? 1A Undefined
VK_ESCAPE 1B ESC key
? 1C-1F Reserved for Kanji systems
VK_SPACE 20 SPACEBAR
VK_PRIOR 21 PAGE UP key
VK_NEXT 22 PAGE DOWN key
VK_END 23 END key
VK_HOME 24 HOME key
VK_LEFT 25 LEFT ARROW key
VK_UP 26 UP ARROW key
VK_RIGHT 27 RIGHT ARROW key
VK_DOWN 28 DOWN ARROW key
VK_SELECT 29 SELECT key
? 2A Original equipment manufacturer (OEM) specific
VK_EXECUTE 2B EXECUTE key
VK_SNAPSHOT 2C PRINT SCREEN key for Windows 3.0 and later
VK_INSERT 2D INS key
VK_DELETE 2E DEL key
VK_HELP 2F HELP key
VK_0 30 0 key
VK_1 31 1 key
VK_2 32 2 key
VK_3 33 3 key
VK_4 34 4 key
VK_5 35 5 key
VK_6 36 6 key
VK_7 37 7 key
VK_8 38 8 key
VK_9 39 9 key
? 3A-40 Undefined
VK_A 41 A key
VK_B 42 B key
VK_C 43 C key
VK_D 44 D key
VK_E 45 E key
VK_F 46 F key
VK_G 47 G key
VK_H 48 H key
VK_I 49 I key
VK_J 4A J key
VK_K 4B K key
VK_L 4C L key
VK_M 4D M key
VK_N 4E N key
VK_O 4F O key
VK_P 50 P key
VK_Q 51 Q key
VK_R 52 R key
VK_S 53 S key
VK_T 54 T key
VK_U 55 U key
VK_V 56 V key
VK_W 57 W key
VK_X 58 X key
VK_Y 59 Y key
VK_Z 5A Z key
VK_LWIN 5B Left Windows key (Microsoft Natural Keyboard)
VK_RWIN 5C Right Windows key (Microsoft Natural Keyboard)
VK_APPS 5D Applications key (Microsoft Natural Keyboard)
? 5E-5F Undefined
VK_NUMPAD0 60 Numeric keypad 0 key
VK_NUMPAD1 61 Numeric keypad 1 key
VK_NUMPAD2 62 Numeric keypad 2 key
VK_NUMPAD3 63 Numeric keypad 3 key
VK_NUMPAD4 64 Numeric keypad 4 key
VK_NUMPAD5 65 Numeric keypad 5 key
VK_NUMPAD6 66 Numeric keypad 6 key
VK_NUMPAD7 67 Numeric keypad 7 key
VK_NUMPAD8 68 Numeric keypad 8 key
VK_NUMPAD9 69 Numeric keypad 9 key
VK_MULTIPLY 6A Multiply key
VK_ADD 6B Add key
VK_SEPARATOR 6C Separator key
VK_SUBTRACT 6D Subtract key
VK_DECIMAL 6E Decimal key
VK_DIVIDE 6F Divide key
VK_F1 70 F1 key
VK_F2 71 F2 key
VK_F3 72 F3 key
VK_F4 73 F4 key
VK_F5 74 F5 key
VK_F6 75 F6 key
VK_F7 76 F7 key
VK_F8 77 F8 key
VK_F9 78 F9 key
VK_F10 79 F10 key
VK_F11 7A F11 key
VK_F12 7B F12 key
VK_F13 7C F13 key
VK_F14 7D F14 key
VK_F15 7E F15 key
VK_F16 7F F16 key
VK_F17 80H F17 key
VK_F18 81H F18 key
VK_F19 82H F19 key
VK_F20 83H F20 key
VK_F21 84H F21 key
VK_F22 85H F22 key
VK_F23 86H F23 key
VK_F24 87H F24 key
? 88-8F Unassigned
VK_NUMLOCK 90 NUM LOCK key
VK_SCROLL 91 SCROLL LOCK key
? 92-B9 Unassigned
? BA-C0 OEM specific
? C1-DA Unassigned
? DB-E4 OEM specific
? E5 Unassigned
? E6 OEM specific
? E7-E8 Unassigned
? E9-F5 OEM specific
VK_ATTN F6 Attn key
VK_CRSEL F7 CrSel key
VK_EXSEL F8 ExSel key
VK_EREOF F9 Erase EOF key
VK_PLAY FA Play key
VK_ZOOM FB Zoom key
VK_NONAME FC Reserved for future use.
VK_PA1 FD PA1 key
VK_OEM_CLEAR FE Clear key