如何在Windows XP系统中阻止Ctrl + Alt + Del,Alt + Tab和(2)

电脑杂谈  发布时间:2020-04-18 11:12:18  来源:网络整理

CTaskKeyHookDll类: 公共CWinApp {

公开

:

CTaskKeyHookDll(){}

〜CTaskKeyHookDll(){}

} MyDll;

///////////////////////////////////////////////// // /

//以下代码指示此DLL的所有实例之间共享该部分

//低级键盘挂钩必须是系统级挂钩

//

#pragma data_seg(“. mydata”)

HHOOK g_hHookKbdLL = NULL; //挂钩句柄

BOOLg_bBeep = FALSE; //按下非法键时会发出哔哔声

#pragma data_seg()

#pragma注释(链接器,“ / SECTION: .mydata,RWS”)//告诉链接器: 创建数据共享部分

///////////////////////////////////

//低级键盘挂钩

//拦截任务转换键: 不通过直接返回

//

LALLULT CALLBACKMyTaskKeyHookLL(整数nCode,WPARAM wp,LPARAM lp)

{

KBDLLHOOKSTRUCT * pkh =(KBDLLHOOKSTRUCT *)lp;

if(nCode == HC_ACTION){

BOOL bCtrlKeyDown =

GetAsyncKeyState(VK_CONTROL)>>(((sizeof(SHORT)* 8)-1);

if(((pkh-> vkCode == VK_ESCAPE && bCtrlKeyDown)|| // Ctrl + Esc

// Alt + TAB

(pkh-> vkCode == VK_TAB && pkh->标志和LLKHF_ALTDOWN)||

// Alt + Esc

(pkh-> vkCode == VK_ESCAPE && pkh->标志和LLKHF_ALTDOWN)||

(pkh-> vkCode == VK_LWIN || pkh-> vkCode == VK_RWIN)){//开始菜单

if(g_bBeep &&(wp == WM_SYSKEYDOWN || wp == WM_KEYDOWN))

MessageBeep(0); //哔哔声

返回1; //不再传递给CallNextHookEx,直接返回

}

}

返回CallNextHookEx(g_hHookKbdLL,nCode,wp,lp);

}

电脑win键在哪_xp屏蔽win键_win键用不了了

///////////////////////////////////////////////// // /

//任务键序列是否被锁定-即是否已安装键盘钩?

//注意: 这里假设没有其他钩子做同样的事情

//

DLLEXPORT BOOLAreTaskKeysDisabled()

{

返回g_hHookKbdLL! = NULL;

}

///////////////////////////////////////////////// // /

// Shield任务键: 安装低级键盘结构

//返回该标志当前是否被阻止(TRUE / FALSE)

//

DLLEXPORT BOOLDisableTaskKeys(BOOL bDisable,BOOL bBeep)

{

如果(bDisable){

if(!g_hHookKbdLL){

g_hHookKbdLL = SetWindowsHookEx(WH_KEYBOARD_LL,

MyTaskKeyHookLL,MyDll.m_hInstance,0);

}

}否则,如果(g_hHookKbdLL!= NULL){

UnhookWindowsHookEx(g_hHookKbdLL);

g_hHookKbdLL = NULL;

}

g_bBeep = bBeep;

返回AreTaskKeysDisabled();

}

TaskKeyHook输出两个函数: DisableTaskKeys和AreTaskKeysDisabled. 前者安装WH_KEYBOARD_LL挂钩;后者确定挂钩是否已安装. 这个键盘挂钩的处理思路是拦截Alt + Tab,Ctrl + Esc,Alt + Esc和Windows键VK_LWIN / VK_RWIN. 稍后将详细描述这两个键. 当钩子击中这些键时,它将直接返回给调用者,而不是将处理传递给CallNextHookEx.

LALLULT CALLBACKMyTaskKeyHookLL(...)

{

如果(/ *任务键*)

返回1; //立即返回

返回CallNextHookEx(...);

}

大多数TaskKeyHook的实现非常简单. 在一个地方只有一个小技巧: 使用#pragma data_seg命名包含整个数据的数据段,并使用#pragma注释(链接器...)告诉链接器将该数据段作为共享段. 有关实现的详细信息,请参考源代码. 本文附带的示例程序(TrapKeys.exe)汇集了上述用于屏蔽键盘按键序列的功能. 此外,它还具有禁用任务栏的功能. 通常xp屏蔽win键,由于禁用了任务转换键,因此也必须禁用任务栏,否则禁用任务转换键是没有意义的. 禁用任务栏的具体方法如下:

HWND hwnd = FindWindow(“ Shell_traywnd”,NULL); //查找任务栏

EnableWindow(hwnd,FALSE); //禁用任务栏

图4是示例程序运行屏幕:

如何在XP系统'/>中阻止Ctrl + Alt + Del,Alt + Tab和Ctrl + Esc键序列


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-179913-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 毋帆
      毋帆

      1依然没有躲过淘汰的命运

    热点图片
    拼命载入中...