请问如何才能屏蔽键盘上“windows”键?(100分)

  • 主题发起人 主题发起人 sakura12
  • 开始时间 开始时间
S

sakura12

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何才能屏蔽键盘上“windows”键?
 
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, nil, 0); //屏蔽系统键
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 0,nil, 0); //恢复系统键
 
当你不需要让用户按Alt+Enter、Ctrl+Alt+Del、Ctrl+Esc等功能键的时候加入以下代码:
Var
temp:integer;
begin
SystemParametersInfo(Spi_screensaverrunning,1,@temp,0);
end;
  当你要恢复功能键时用以下代码:
Var
Temp:integer;
begin
SystemParametersInfo(spi_screensaverrunning,0,@temp,0);
end;
 
function LowLevelKeyboardProc(nCode:integer;WParam:WPARAM;LParam:LPARAM):LRESULT;stdcall;
var
fEatKeystroke:BOOL;
p:PKBDLLHOOKSTRUCT;
begin
result:=0;
fEatKeystroke := false;
p:=PKBDLLHOOKSTRUCT(lparam);
if (ncode=HC_ACTION) then
begin
case wparam of
WM_KEYDOWN,
WM_SYSKEYDOWN,
WM_KEYUP,
WM_SYSKEYUP:
featkeystroke :=(p.vkcode = VK_Lwin) or (p.vkcode = VK_Rwin)or (p.vkcode = VK_apps);
end;
end;
if featkeystroke = true then
result:=1;
if ncode <> 0 then
result := callnexthookex(0,ncode,wparam,lparam);
end;

procedure form1.lock;
begin
hhklowlevelkybd := setwindowshookexw(wh_keyboard_ll,LowlevelKeyboardproc,hinstance,0);
end;

锁住左右win键和application键,win98/nt/2000/xp都可以
 
怎么问两遍????
 
后退
顶部