gpt4 book ai didi

c# - 在 C# 中将显示发送到 sleep 模式

转载 作者:太空狗 更新时间:2023-10-29 22:20:45 25 4
gpt4 key购买 nike

显示器在配置的时间后进入休眠模式是标准的 Windows 功能。是否有可能从 Windows 7 中的 c#.net 应用程序立即将显示器发送到 sleep 模式?我已经尝试过我发现的一件事,但它对我不起作用。

[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);

[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetDesktopWindow();

private const int SC_MONITORPOWER = 0xF170;
private const UInt32 WM_SYSCOMMAND = 0x0112;
private const int MONITOR_ON = -1;
private const int MONITOR_OFF = 2;
private const int MONITOR_STANBY = 1;

public static void DisplayToSleep()
{
var hWnd = GetDesktopWindow();
var ret = SendMessage(hWnd , Constants.WM_SYSCOMMAND, (IntPtr)Constants.SC_MONITORPOWER, (IntPtr)Constants.MONITOR_OFF);
}

hWnd 似乎有一个有效值,但 ret 始终为 0。

谢谢,咖啡

最佳答案

这在 WinForms 应用程序中工作正常:

public partial class Form1 : Form
{
private int SC_MONITORPOWER = 0xF170;
private uint WM_SYSCOMMAND = 0x0112;

[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
SendMessage(this.Handle, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)2);
}
}

问题似乎来自 GetDesktopWindow 函数。

关于c# - 在 C# 中将显示发送到 sleep 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3594465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com