【分享】低级键盘来屏蔽win键
<p><font face="Verdana">function LowLevelKeyboardProc(nCode:integer;WParam:WPARAM;LParam:LPARAM):LRESULT;stdcall;<br/>type<br/>KBDLLHOOKSTRUCT=record<br/> vkCode:DWORD;<br/> scanCode:DWORD;<br/> flags:DWORD;<br/> time:DWord;<br/> dwExtraInfo:dword;<br/>end;<br/>var<br/> fFlag:BOOL;<br/> p:^KBDLLHOOKSTRUCT;<br/>begin<br/> result:=0;<br/> fFlag := false;<br/> p:=Pointer(LPARAM);<br/> if (ncode=HC_ACTION) then<br/> begin<br/> case wparam of<br/> WM_KEYDOWN,<br/> WM_SYSKEYDOWN,<br/> WM_KEYUP,<br/> WM_SYSKEYUP:<br/> fFlag :=(p.vkCode = VK_Lwin) or (p.vkCode = VK_Rwin)or (p.vkCode = VK_apps);<br/> end;<br/> end;<br/> if fFlag = true then<br/> begin<br/> PostMessage(hHandle,WM_SOCK,0,0);<br/> Result:=1;<br/> end;<br/> if ncode <> 0 then<br/> Result := CallNextHookEX(0,ncode,wparam,lparam);<br/>end;</font></p><p><font face="Verdana"><font face="Verdana"></font></font> </p>
<p><font face="Verdana"><font face="Verdana"><font face="Verdana">procedure TForm1.Button1Click(Sender: TObject);</font></font></font></p>
<p><font face="Verdana"><font face="Verdana">const<br/> WH_KEYBOARD_LL=13;</font></font></p>
<p>var </p>
<p> wm_sock:integer;</p>
<p> hHandle:HWND;</p>
<p><font face="Verdana"><font face="Verdana">begin<br/> wm_sock := 0;<br/> wm_sock := RegisterWindowMessage('wm_sock');<br/> //showmessage(inttostr(wm_sock));<br/> hHandle := Self.Handle;<br/> setwindowshookexw(WH_KEYBOARD_LL,LowLevelKeyboardProc,hinstance,0);</font></p>
<p>end;<br/></p></font>
[此贴子已经被作者于2009-5-23 13:45:24编辑过]
页:
[1]