Windows自动关闭显示器后,C#代码无法唤醒桌面的技术问询
C#代码唤醒自动关闭的显示器并恢复桌面问题
基础信息
- 已基于微软平台示例代码实现C#控制双显示器开关,直接运行时功能正常
- Windows 10电源配置:睡眠设为「从不」,显示器闲置15分钟后自动关闭,该设置生效正常
- 硬件:Intel处理器、ASUS P8Z77-V-LX主板、16GB内存、500GB系统硬盘
异常现象
当显示器因Windows自动闲置关闭后,调用测试代码中的唤醒逻辑(发送SC_MONITORPOWER参数-1),仅能点亮显示器但无桌面输出;按下键盘任意键后桌面可立即恢复。此时PC可正常ping通、VNC远程访问,说明系统未进入休眠或关机状态。
测试代码
using System; using System.Runtime.InteropServices; namespace ConsoleApp { internal class Program { static void Main(string[] args) { const uint WM_SYSCOMMAND = 0x0112; const uint SC_MONITORPOWER = 0xF170; IntPtr HWND_BROADCAST = new IntPtr(0xffff); // 关闭显示器 SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2); // 唤醒显示器 SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1); } [DllImport("user32.dll")] public static extern IntPtr SendMessage(IntPtr hWnd, uint msg, uint wParam, int lParam); } }
疑问
Windows自动关闭显示器的机制,与代码调用SendMessage控制显示器的机制存在差异,如何通过代码实现同时唤醒显示器并恢复桌面,无需手动按键?
内容的提问来源于stack exchange,提问作者Alan T
相关产品推荐
相关产品推荐

