MFC屏蔽 WindowS按键
2015-09-04 16:22
363 查看
LRESULT CALLBACK LowLevelKeyboardPorc(int nCode,WPARAM wParam,LPARAM lParam)//屏蔽按键的真正实现方法
{
BOOL fEatKeystrole = FALSE;
if (nCode == HC_ACTION)
{
switch (wParam)
{
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
case WM_KEYUP:
case WM_SYSKEYUP:
{
PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam;
if (p->vkCode == VK_LWIN || p->vkCode == VK_RWIN)//
{
fEatKeystrole = TRUE;
}
// //Tab + Alt
/*((p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0))
//Esc + Alt
|| ((p->vkCode == VK_ESCAPE) && ((p->flags & LLKHF_ALTDOWN) != 0))
//Esc + Ctrl
|| ((p->vkCode == VK_ESCAPE) && ((GetKeyState(VK_CONTROL) & 0x8000) != 0))
//Ctrl + Space
|| (((GetKeyState(VK_CONTROL) & 0x8000) != 0) && (p->vkCode == VK_SPACE));
*/
}
break;
}
}
return(fEatKeystrole?1:CallNextHookEx(NULL,nCode,wParam,lParam));
}
BOOL CXXXDlg::installhook(void)
{
HINSTANCE hins=AfxGetInstanceHandle();
Hook = SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)LowLevelKeyboardPorc,hins,0);
return (BOOL)Hook;
}
BOOL CXXXDlg::OnInitDialog()
{
//前面代码 系统默认,
SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);//全屏后一直在前端显示
HWND hWnd = ::FindWindow(_T("Shell_TrayWnd"),NULL);//取消任务栏,开始菜单
HWND hButton =::FindWindow(NULL, _T("Start"));//取消开始菜单 ,XP下不成功
if (hWnd&& hButton)
{
// static BOOL bShow = FALSE;
::ShowWindow(hWnd, SW_HIDE );
::ShowWindow(hButton,SW_HIDE);
}
installhook();//加载勾子
return TRUE;
}
//卸载
UnhookWindowsHookEx(g_hhkLowLevel,Kybd);//这个参数不对
http://blog.csdn.net/eplanet/article/details/1789941
{
BOOL fEatKeystrole = FALSE;
if (nCode == HC_ACTION)
{
switch (wParam)
{
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
case WM_KEYUP:
case WM_SYSKEYUP:
{
PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam;
if (p->vkCode == VK_LWIN || p->vkCode == VK_RWIN)//
{
fEatKeystrole = TRUE;
}
// //Tab + Alt
/*((p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0))
//Esc + Alt
|| ((p->vkCode == VK_ESCAPE) && ((p->flags & LLKHF_ALTDOWN) != 0))
//Esc + Ctrl
|| ((p->vkCode == VK_ESCAPE) && ((GetKeyState(VK_CONTROL) & 0x8000) != 0))
//Ctrl + Space
|| (((GetKeyState(VK_CONTROL) & 0x8000) != 0) && (p->vkCode == VK_SPACE));
*/
}
break;
}
}
return(fEatKeystrole?1:CallNextHookEx(NULL,nCode,wParam,lParam));
}
BOOL CXXXDlg::installhook(void)
{
HINSTANCE hins=AfxGetInstanceHandle();
Hook = SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)LowLevelKeyboardPorc,hins,0);
return (BOOL)Hook;
}
BOOL CXXXDlg::OnInitDialog()
{
//前面代码 系统默认,
SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);//全屏后一直在前端显示
HWND hWnd = ::FindWindow(_T("Shell_TrayWnd"),NULL);//取消任务栏,开始菜单
HWND hButton =::FindWindow(NULL, _T("Start"));//取消开始菜单 ,XP下不成功
if (hWnd&& hButton)
{
// static BOOL bShow = FALSE;
::ShowWindow(hWnd, SW_HIDE );
::ShowWindow(hButton,SW_HIDE);
}
installhook();//加载勾子
return TRUE;
}
//卸载
UnhookWindowsHookEx(g_hhkLowLevel,Kybd);//这个参数不对
http://blog.csdn.net/eplanet/article/details/1789941
相关文章推荐
- C#并行编程 (Barrier,CountdownEvent,ManualResetEventSlim,SemaphoreSlim,SpinLock,SpinWait )
- scrapy爬虫架构介绍和初试
- 计算机网络之——DNS域名系统
- SQLite学习笔记(15)-B-tree(1)
- 深度网络概览
- POJ 1003解题报告
- php模拟数据库常用操作效果
- Splay伸展树模板总结
- C++基础---虚析构函数与纯虚析构函数
- C++继承访问方式
- MySQL数据库入门
- c++中sort()及qsort()的用法总结
- 面试中常考的指针问题
- 从自我学习到深层网络
- 关于python,数据挖掘,自然语言处理的一些学习资源
- 富人凭什么挣那么多钱
- django的get和filter方法的区别
- security analysis and visualization livecd
- 【软件工程】 之 全局概览
- poj3271Lilypad Pondg