我正在创建一项练习,使用没有显示器的电脑(我的意思是只使用键盘和鼠标,并且记住要单击哪些按钮),这部分练习需要以某种方式禁用它并让学生停止创建这个黑色覆盖层的过程或激活一个再次启用显示器的脚本。
我尝试过使用 winapi 中的 SendMessage,但它只会让显示器进入睡眠状态,任何鼠标移动或键盘点击都会禁用该功能。我使用过这个:
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
我发现在 HKLM > Software > Microsoft > TMM > UseIViewHelper 中有一个注册表可以处理 Windows 中新显示器的检测。据说如果您将其从 1 更改为 0,它就会停止检测新显示器,但似乎不起作用(至少就我的理解而言)。
我尝试使用 Nir Soffer 的 MultiMonitorTool,但它似乎并没有禁用主显示器,而且由于我的电脑只有一台显示器,所以它根本没有帮助。
有人能帮我想想该怎么做吗,或者我应该使用什么工具?
谢谢
答案1
我最终使用一些技巧完成了这项任务,下面是我完成的方法:
- 编写了一个 C# 表单,其 topmost = true 属性使其位于除任务管理器、开始菜单和任务栏之外的所有可能的窗口的前面。
- 用 C# 编写了一个函数来更改注册表以启用任务管理器,并从 crtl+alt+del 屏幕中删除了大多数选项。
- 添加了一个激活 bat 脚本的功能,该脚本可激活 AHK 脚本来禁用所有 crtl + alt + delete 可能性(我知道,这有点恶心)。
- 创建了一个删除任务栏的功能。
- 通过以下方式手动更改隐私选项:右键单击任务栏>选项>开始菜单>取消勾选隐私部分中的两个选项。
结果:
一个黑色的覆盖层,没有开始菜单,没有 crtl+alt+del ,没有任务管理器,没有 alt tab。然而,你所做的一切都正常记录,就像显示器断开连接一样。这样做时要小心,因为你可能会陷入困境而没有选择!我创建了另一个应用程序来恢复所有这些内容,并将其添加到运行快捷方式中,这样在没有看到任何东西的情况下,我可以盲目地按 CRTL+R 并写入我创建的快捷方式以禁用所有内容!
如果有人想要完整的源代码,请给我发私信。