用HOOK禁用鼠标与键盘点击
//首先定義
HWND g_hWnd;??????????? //定義一個窗口的句柄
HHOOK g_hMouse;???????? //鼠標(biāo)的鉤子過程
HHOOK g_hKeyBoard;????? //鍵盤的鉤子過程
//鼠標(biāo)鉤子過程的回調(diào)函數(shù)
HRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
?return 1;
}
//鍵盤鉤子過程的回調(diào)函數(shù)
HRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
/*
if(VK_SPACE==wParam)? //VK_SPACE為設(shè)備虛擬碼,表示空格
//我們可以選擇go to definition找到其他虛擬碼,如果我們
//同時屏蔽掉回車鍵,這時按鍵盤上的Alt+F4鍵可以退出。
//如果你連Alt+F4都想屏蔽,添加以下判斷語句
//if(VK_F4==wParam && (lParam>>29 & 1))
//lParam右移29位,正好它的第二十九位在第一位上,
//lParam得第二十九位表示了Alt鍵被按下
return 1;
*/
?///使程序在F2鍵按下后退出/
?if(VK_F2==wParam)
?{
??//::SendMessage(g_hWnd,WM_CLOSE,0,0);? //發(fā)送關(guān)閉消息
??UnhookWindowsHookEx(g_hKeyBoard);
??UnhookWindowsHookEx(g_hMouse);//移除一個已經(jīng)安裝的hook
??//當(dāng)我們自己發(fā)送消息關(guān)閉程序時,一定要記得關(guān)閉Hook
??return 1;
?}
?
?else
??return CallNextHookEx(g_hKeyBoard,nCode,wParam,lParam);
?//返回下一個鉤子過程(一次按鍵相當(dāng)于一個鉤子過程)
?
}
?
?
?
?
BOOL CTTDDDlg::OnInitDialog()
{
?CDialog::OnInitDialog();
?// Set the icon for this dialog.? The framework does this automatically
?//? when the application's main window is not a dialog
?SetIcon(m_hIcon, TRUE);???// Set big icon
?SetIcon(m_hIcon, FALSE);??// Set small icon
?
?// TODO: Add extra initialization here
?g_hWnd = m_hWnd;???????? //獲得當(dāng)前窗口的句柄,供回調(diào)函數(shù)用
?// 安裝一個鼠標(biāo)hook,GetCurrentThreadId()返回調(diào)用線程的線程標(biāo)識
?g_hMouse = SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId());
?// 安裝一個鍵盤hook
?g_hKeyBoard = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());
?return TRUE;? // return TRUE? unless you set the focus to a control
}
?
轉(zhuǎn)載于:https://www.cnblogs.com/carekee/articles/2325771.html
總結(jié)
以上是生活随笔為你收集整理的用HOOK禁用鼠标与键盘点击的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单的模糊数学笔记
- 下一篇: Flex+J2EE获取FlexSessi