我想在编写的程序运行后屏蔽掉键盘的方向键。
请问怎么弄?
(不是在程序内部的屏蔽,是完全屏蔽掉…)
请问怎么弄?
(不是在程序内部的屏蔽,是完全屏蔽掉…)
解决方案 »
- 图像倒置问题(有代码,RGB)
- FastReport調整邊距問題
- 如何隐藏自己的窗口在进程例表(最好能隐藏进程)
- 告诉大家一个好网站.
- 怎么用 install s for delphi 或者 wise 做安装程序时候
- 请问哪个控件可以实现指定文字变色,改变字体等?
- 请教各位大侠:有关数据库的导入导出
- Listbox的问题
- s_name:=query1.filds.Fields[2].FieldName ;不太好事
- indy组件的AddHeader怎么用?怎么给idmessage.msgid赋值!!!!!!!!谢谢
- Form.show,fsNormal状态,点主窗口的时候,如何让其不跑到主窗口的后面去?
- 请教大家,用Delphi翻译的程序如何才能不用安装直接运行。
type
KBDLLHOOKSTRUCT = record
vkCode: DWORD;
Shift: TShiftState;
ScanCode: DWORD;
Flags: DWORD;
Time: DWORD;
dwExtraInfo: DWORD;
end;
PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT;
{Hook}
var
KeyHook:HHOOK;
function keyHookProc(nCode: Integer;WParam: WPARAM;LParam: LPARAM): LRESULT;stdcall;
var
y: integer;
p: PKBDLLHOOKSTRUCT;
begin
if nCode<0 then
Result:= CallNextHookEx(KeyHook,nCode,WParam,LParam)
else
begin
y:=0;
case WParam of
WM_KEYDOWN,WM_SYSKEYDOWN:
begin
p:=PKBDLLHOOKSTRUCT(Lparam);
if (p^.vkCode=37)or(p^.vkCode=38)or(p^.vkCode=39)or(p^.vkCode=40)then//這裡可以屏蔽任何鍵
y:=1;
end;
WM_KEYUP,WM_SYSKEYUP:
begin
p:=PKBDLLHOOKSTRUCT(Lparam);
if (p^.vkCode=37)or(p^.vkCode=38)or(p^.vkCode=39)or(p^.vkCode=40)then//這裡可以屏蔽任何鍵
y:=1;
end;
end;
if y=1 then
Result:=1
else
Result:= CallNextHookEx(KeyHook,nCode,WParam,LParam)
end;
end;
//創建Hook
if KeyHook=0 then
begin
KeyHook:=SetWindowsHookEx(13,@keyHookProc,HInstance,0);
end;
请LZ直接安装一个CNPack的包,使用TCnKeyBlocker来实现!
(最好要学习实现)
1.在VC里可以使用 PreTranslateMessage API屏蔽消息,不知道Delphi有没有此函数,如果有可以使用。
2.除了楼上的那种全局钩子,是否还可以使用SetWindowLongPtr API来截取 windows默认的消息函数方法来实现,屏蔽消息。