拦截键盘win键
来源:互联网 发布:java 死锁 编辑:程序博客网 时间:2024/04/29 14:50
方法一:
function LowLevelKeyboardProc(nCode:integer;WParam:WPARAM;LParam:LPARAM):LRESULT;stdcall;
type
KBDLLHOOKSTRUCT=record
vkCode:DWORD;
scanCode:DWORD;
flags:DWORD;
time:DWord;
dwExtraInfo:dword;
end;
var
fFlag:BOOL;
p:^KBDLLHOOKSTRUCT;
begin
result:=0;
fFlag := false;
p:=Pointer(LPARAM);
if (ncode=HC_ACTION) then
begin
case wparam of
WM_KEYDOWN,
WM_SYSKEYDOWN,
WM_KEYUP,
WM_SYSKEYUP:
fFlag :=(p.vkCode = VK_Lwin) or (p.vkCode = VK_Rwin)or (p.vkCode = VK_apps);
end;
end;
if fFlag = true then
Result:=1;
if ncode <> 0 then
Result := CallNextHookEX(0,ncode,wparam,lparam);
end;
procedure TForm1.Button1Click(Sender: TObject);
const
WH_KEYBOARD_LL=13;
begin
setwindowshookexw(WH_KEYBOARD_LL,LowlevelKeyboardproc,hinstance,0);
end;
方法二:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
procedure WndProc(var Message: TMessage); override;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
wm_sock:integer;
hHandle:HWND;
function LowLevelKeyboardProc(nCode:integer;WParam:WPARAM;LParam:LPARAM):LRESULT;stdcall;
type
KBDLLHOOKSTRUCT=record
vkCode:DWORD;
scanCode:DWORD;
flags:DWORD;
time:DWord;
dwExtraInfo:dword;
end;
var
fFlag:BOOL;
p:^KBDLLHOOKSTRUCT;
begin
result:=0;
fFlag := false;
p:=Pointer(LPARAM);
if (ncode=HC_ACTION) then
begin
case wparam of
WM_KEYDOWN,
WM_SYSKEYDOWN,
WM_KEYUP,
WM_SYSKEYUP:
fFlag :=(p.vkCode = VK_Lwin) or (p.vkCode = VK_Rwin)or (p.vkCode = VK_apps);
end;
end;
if fFlag = true then
begin
PostMessage(hHandle,WM_SOCK,0,0);
Result:=1;
end;
if ncode <> 0 then
Result := CallNextHookEX(0,ncode,wparam,lparam);
end;
procedure TForm1.Button1Click(Sender: TObject);
const
WH_KEYBOARD_LL=13;
begin
wm_sock := 0;
wm_sock := RegisterWindowMessage('wm_sock');
// showmessage(inttostr(wm_sock));
hHandle := Self.Handle;
setwindowshookexw(WH_KEYBOARD_LL,LowLevelKeyboardProc,hinstance,0);
end;
procedure TForm1.WndProc(var Message: TMessage);
begin
if Message.Msg=WM_SOCK then
begin
showmessage('用户按下win键');
end;
inherited;
end;
end.
- 拦截键盘win键
- 屏蔽WIN键盘键
- Win XP 键盘快捷键
- C++的全局键盘HOOK屏蔽Win键
- C++的全局键盘HOOK屏蔽Win键
- win键盘映射成mac键盘
- Win XP 键盘快捷键概述
- win xp 键盘快捷键概述
- win xp 键盘快捷键概述
- Win XP 键盘快捷键大全
- js拦截键盘事件 ext拦截事件
- C#窗口拦截键盘事件
- 低级键盘钩子屏蔽Win键、Alt+Tab键的响应
- 低级键盘钩子屏蔽Win键、Alt+Tab键的响应
- 屏蔽WIN、ALT+TAB、CTRL+ESC键的低级键盘钩子
- Windows锁屏的快捷键设置-适用于没有Win键的键盘
- 1:Win XP 键盘快捷键概述
- xcode 快捷键(用win键盘)
- 狼的十大处世哲学 [图]
- 继续学习JAVA
- 利用HOOK建立鼠标增强程序
- Hook简介
- java 面试
- 拦截键盘win键
- 希望在望
- 沧海
- 先人的DELPHI基础开发技巧
- Hey Jude
- CSDN Windows专区网络版版主测试题目答案
- ACM结果出来
- About AscII ,Unicode ...
- 背下来的片段