试一下这个 var i:integer; 屏蔽时用: systemparametersinfo(spi_screensaverrunning,1,@i,0); 退出时用 systemparametersinfo(spi_screensaverrunning,0,@i,0);解除屏蔽
试试 :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;
设置敏感健:resgisterHotKey(handle,GlobalAddAtom(Pchar(UserDefineHotKey))-$C000, MOD_win ,//要不就是MOD_Windows,记不清了 nil);消息响应函数:procedure WMhotKeyhandel(var msg:Tmessage);message Wm_HotKey;begin if msg.lpararmLo=Mod_win then .....end;释放敏感健: unregisterhotkey(handle,GlobalAddAtom(Pchar(UserDefineHotKey))-$C000); deleteAtom(GlobalAddAtom(Pchar(UserDefineHotKey))-$C000);
var
i:integer;
屏蔽时用:
systemparametersinfo(spi_screensaverrunning,1,@i,0);
退出时用
systemparametersinfo(spi_screensaverrunning,0,@i,0);解除屏蔽
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;
MOD_win ,//要不就是MOD_Windows,记不清了
nil);消息响应函数:procedure WMhotKeyhandel(var msg:Tmessage);message Wm_HotKey;begin if msg.lpararmLo=Mod_win then
.....end;释放敏感健:
unregisterhotkey(handle,GlobalAddAtom(Pchar(UserDefineHotKey))-$C000);
deleteAtom(GlobalAddAtom(Pchar(UserDefineHotKey))-$C000);
我想把他作成winnt服务程序可是不行为什么?