win api 隐藏任务栏和开始按钮/屏蔽系统组合按键

 if(checked)
    {
        //隐藏任务栏
        HWND hWnd = ::FindWindow(TEXT("Shell_traywnd"),TEXT(""));
        ::SetWindowPos(hWnd,0,0,0,0,0,SWP_HIDEWINDOW);

        // 获取开始按钮句柄,并显示
        HWND hWnd2 = FindWindow(TEXT("Button"), NULL);
        ShowWindow(hWnd2, SW_HIDE);
    }
    else{

        //显示任务栏
        HWND hWnd = ::FindWindow(TEXT("Shell_traywnd"),TEXT(""));
        ::SetWindowPos(hWnd,0,0,0,0,0,SWP_SHOWWINDOW);

        // 获取开始按钮句柄,并显示
        HWND hWnd2 = FindWindow(TEXT("Button"), NULL);
        ShowWindow(hWnd2, SW_SHOW);
    }

http://www.office-cn.net/t/api/index.html?apihelp.htm

屏蔽win组合按键 

HHOOK keyHook = NULL;
//先声明函数,实现在下面
LRESULT CALLBACK keyProc(int nCode,WPARAM wParam,LPARAM lParam );


//初始化钩子,关闭键盘事件(除了ALT+CTRL+DELETE)
void initHook()
{
    keyHook = SetWindowsHookEx(WH_KEYBOARD_LL, keyProc, GetModuleHandle(NULL), 0);
}


//钩子用的函数
LRESULT CALLBACK keyProc(int nCode,WPARAM wParam,LPARAM lParam )
{
    //在WH_KEYBOARD_LL模式下lParam 是指向KBDLLHOOKSTRUCT类型地址
    KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam;
    //如果nCode等于HC_ACTION则处理该消息,如果小于0,则钩子子程就必须将该消息传递给 CallNextHookEx

    if(nCode >= HC_ACTION)
    {
        if(pkbhs->vkCode == VK_ESCAPE && GetAsyncKeyState(VK_CONTROL)& 0x8000 && GetAsyncKeyState(VK_SHIFT)&0x8000){
                    qDebug() << "Ctrl+Shift+Esc";
        }else if(pkbhs->vkCode == VK_ESCAPE && GetAsyncKeyState(VK_CONTROL) & 0x8000){
            qDebug() << "Ctrl+Esc";
        }else if(pkbhs->vkCode == VK_TAB && pkbhs->flags & LLKHF_ALTDOWN){
            qDebug() << "Alt+Tab";
        }else if(pkbhs->vkCode == VK_ESCAPE && pkbhs->flags &LLKHF_ALTDOWN){
            qDebug() << "Alt+Esc";
        }else if(pkbhs->vkCode == VK_LWIN || pkbhs->vkCode == VK_RWIN){
            qDebug() << "LWIN/RWIN";
        }else if(pkbhs->vkCode == VK_F4 && pkbhs->flags & LLKHF_ALTDOWN){
            qDebug() << "Alt+F4";
        }else if(pkbhs->vkCode == VK_F1 && pkbhs->flags &LLKHF_ALTDOWN) {
            UnhookWindowsHookEx(keyHook);
            qDebug() << "Alt+F1 back room";
        }
        else
        {
            return 0;
        }
        return 1;//返回1表示截取消息不再传递,返回0表示不作处理,消息继续传递
    }
    return CallNextHookEx(keyHook, nCode, wParam, lParam);
}
发布了33 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/LWLGZY/article/details/100694248