zoukankan      html  css  js  c++  java
  • HOOK 底层键盘消息---WH_KEYBOARD_LL

    代码:屏蔽三个全局快捷键

    代码的作用是屏蔽掉凝视中的三个快捷键.


    LRESULT CALLBACK LowLevelKeyboardProc (INT nCode, WPARAM wParam, LPARAM lParam)
    {
    	// By returning a non-zero value from the hook procedure, the
    	// message does not get passed to the target window
    	KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *)lParam;
    	BOOL bControlKeyDown = 0;
    
    	HWND hWnd = GetForegroundWindow();
    	WCHAR szClassName[MAX_PATH] = {0};
    	::GetClassName(hWnd, szClassName, MAX_PATH);
    
    		switch (nCode)
    		{
    		case HC_ACTION:
    			{
    				// Check to see if the CTRL key is pressed
    				bControlKeyDown = GetAsyncKeyState (VK_CONTROL) >> ((sizeof(SHORT) * 8) - 1);
    
    				 //Disable CTRL+ESC
    				if (pkbhs->vkCode == VK_ESCAPE && bControlKeyDown)
    					return 1;
    
    				 //Disable ALT+TAB
    				if (pkbhs->vkCode == VK_TAB && pkbhs->flags & LLKHF_ALTDOWN)
    					return 1;
    
    				 //Disable ALT+ESC
    				if (pkbhs->vkCode == VK_ESCAPE && pkbhs->flags & LLKHF_ALTDOWN)
    					return 1;
    
    				break;
    			}
    
    		default:
    			break;
    		}
    		//MessageBoxA(NULL, "aaa", NULL, MB_OK);
    		return 1;
    
    
    
    }
    
    void ChookKeyboardllDlg::OnBnClickedOk()
    {
    	// TODO: 在此加入控件通知处理程序代码
    	Hook=(HHOOK)SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)LowLevelKeyboardProc, theApp.m_hInstance,0); 
    	//CDialogEx::OnOK();
    }
    
    
    void ChookKeyboardllDlg::OnBnClickedCancel()
    {
    	// TODO: 在此加入控件通知处理程序代码
    	if(Hook)
    	{
    		BOOL result = UnhookWindowsHookEx((HHOOK)Hook); // 卸载钩子
    		if (result) Hook = NULL;
    	}
    	//CDialogEx::OnCancel();
    }


  • 相关阅读:
    zz java java.nio.ByteBuffer flip
    看到的应用mina做的一个实例
    命令行工具SVN
    ByteBuffer 理解
    Linux命令行下常用svn命令
    三元操作符对null 的处理
    获取最后一个字符串
    C#分割字符串
    学习Silverlight 书籍
    oralce 进行多表同步
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7360138.html
Copyright © 2011-2022 走看看