You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 07:43:18