以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求助:如何屏蔽按键达到类似锁屏功能 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=194413) |
-- 作者:tsailong -- 发布时间:2024/12/7 16:40:00 -- 求助:如何屏蔽按键达到类似锁屏功能 请教各位老师各位大神,如何屏蔽键盘“win”、“Alt+Tab”“Ctrl+Alt+Delete”这类可切换Windows系统界面的按键响应,使其无法非法退出foxtable当前窗口或切换到Windows其他窗口,或通过鼠标在任务栏启动任务管理器强行关闭foxtable程序进程,锁定在当前窗口。 相关代码该如何写,求教,谢谢!
|
-- 作者:有点蓝 -- 发布时间:2024/12/7 17:06:00 -- 没有办法 |
-- 作者:tsailong -- 发布时间:2024/12/7 17:22:00 -- 网上找到个方法,可变为foxtable对应的代码吗? ………………………… Windows平台(使用Windows API,以C++为例) 以下代码通过安装一个底层键盘钩子( SetWindowsHookEx )来拦截键盘消息,实现类似禁用键盘的效果。不过这只是拦截消息不让其正常传递处理,并非真正从硬件层面禁用。 cpp
#include <windows.h> #include <iostream> // 键盘钩子过程 LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { // 直接返回1,表示拦截消息,不传递给下一个钩子或者目标窗口等进行处理 return 1; } int main() { HHOOK hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, NULL, 0); if (hKeyboardHook == NULL) { std::cerr << "Failed to set keyboard hook!" << std::endl; return 1; } // 进入消息循环来让钩子生效,这里简单用个循环模拟持续生效状态,实际应用中可能需要更合理的循环控制等逻辑 MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } // 卸载钩子 UnhookWindowsHookEx(hKeyboardHook); return 0; }
|