線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2899
推到 Plurk!
推到 Facebook!

屏蔽系统热键 除 Ctrl + Alt + Del 之外

 
kkk_731
一般會員


發表:7
回覆:4
積分:2
註冊:2008-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-03-18 09:28:31 IP:218.59.xxx.xxx 訂閱

方法 比较彻底,除 Ctrl Alt Del 之外全被屏蔽。
在程序中设置如下全局变量和全局函数:
// 钩子句柄
HHOOK OldHook;

long CALLBACK KeyProc(int code, WPARAM wParam, LPARAM lParam)
{
KBDLLHOOKSTRUCT *pkbhs;
if (code < 0)
{
return CallNextHookEx(OldHook, code, wParam, lParam);
}
pkbhs = (KBDLLHOOKSTRUCT*) lParam;
if (pkbhs->vkCode == 91 || pkbhs->vkCode == VK_RWIN)//封锁 win 键
{
return 1;
}
if (pkbhs->vkCode == VK_ESCAPE && GetAsyncKeyState(VK_CONTROL) < 0)
{
return 1; //封锁 CTRL ESC
}
if (pkbhs->vkCode == VK_TAB && pkbhs->flags&LLKHF_ALTDOWN)
{
return 1; //封锁 ALT TAB
}
if (pkbhs->vkCode == 115 && pkbhs->flags & LLKHF_ALTDOWN)
{
return 1; //封锁 ALT F4
}
if (pkbhs->vkCode == VK_ESCAPE && pkbhs->flags & LLKHF_ALTDOWN)
{
return 1; //封锁 ALT ESC
}
if (pkbhs->vkCode == VK_SPACE && GetAsyncKeyState(VK_CONTROL) < 0)
{
return 1; //封锁 CTRL ' '
}
return CallNextHookEx(OldHook, code, wParam, lParam);
}
然后就可以屏蔽和启用系统热键了
// 屏蔽热键
OldHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyProc, HInstance, 0);
// 启用热键
UnhookWindowsHookEx(OldHook);

这个方法 应该是现在最常用的了
系統時間:2024-04-20 20:53:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!