« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
闪耀~! |
Blog信息 |
blog名称: 日志总数:17 评论数量:24 留言数量:0 访问次数:133988 建立时间:2005年9月28日 |

| |
[C Plus Plus]隐藏桌面和屏蔽系统热键编程 原创空间
codebee 发表于 2006/1/8 17:12:38 |
-Codebee
隐藏桌面
在隐藏桌面,任务栏,开始按钮,都可以通过windows API 函数 FindWindow() 和 ShowWindow()实现。
隐藏任务栏,你可以使用下面的代码:
ShowWindow(FindWindow("Shell_TrayWnd", NULL), SW_HIDE);
隐藏开始菜单按钮,你首先要获得按钮的ID,然后使用下面的代码:
ShowWindow(GetDlgItem(FindWindow("Shell_TrayWnd", NULL),0x130), SW_HIDE);
Shell_TrayWnd 是任务栏的类0x130 是开始按钮的ID
这些都是通过VC++6.0 下面的Spy++ 工具捕获到的。同理,你可以捕获任何一个你想要的窗口或者按钮。
屏蔽窗口不想隐藏,可以把ShowWindow() 函数换为 EnableWindow()。
如此,当你按下Win键仍然会弹出开始菜单,下面我们来屏蔽热键。
屏蔽系统热键
在Win9x/ME 可以用下面的代码:
SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, TRUE, &bOldState, 0);
当然Windows2000 和 Windows XP 是不适合这种方法的。
屏蔽系统热键,在Windows2000 和 Windows XP 是用钩子函数来实现的
首先,在程序中安装一个钩子:SetWindowsHookEx():
hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, hInstance, 0);
KeyboardProc() 函数是一个CallBack类型的,也就是说一旦有按键按下系统都会调用此函数。
LRESULT KeyboardProc(...) { if (Key == VK_SOMEKEY) return 1; // 屏蔽热键
return CallNextHookEx(...); // 返回 }
释放钩子时:
UnhookWindowsHookEx(hKeyboardHook);
当然这里是安装的系统级的钩子(关于钩子可以参看Blog里的另外一篇转的文章[C++与WIN32与MFC]利用钩子函数来捕捉键盘响应的windows应用程序.(转))。
Ctrl+Alt+Del 的屏蔽
Ctrl+Alt+Del Windows 不会把它放入键盘钩子的消息中(关于键盘钩子也请参看上面的文章)
在这里说说我的方法,主要是屏蔽任务管理。首先获得系统所以的进程(请参考Blog里的 通过Toolhelp API 查看本地进程的程序(VC 6.0 编译通过))。
然后使用 Bool TerminateProcess (HANDLE hProcess,UINT fuExitCode);完成。
如果大家有更好的方法可以和我交流。 |
|
回复:隐藏桌面和屏蔽系统热键编程 原创空间
毛(游客)发表评论于2009/8/30 16:56:52 |
|
回复:隐藏桌面和屏蔽系统热键编程 原创空间
flyingcs(游客)发表评论于2006/4/28 14:46:06 |
呵呵。。。兄弟先转你的一下,我们可以搞联结啊。
www.donews.net/elite |
|
» 1 »
|