gpt4 book ai didi

winapi - 关闭/打开显示器 : can't turn on

转载 作者:行者123 更新时间:2023-12-03 00:26:44 25 4
gpt4 key购买 nike

我在谷歌上找到了这个:

版本 1:

SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2); //turn off
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1); //turn on

版本 2:

HWND h = FindWindow(0, 0);
SendMessage(h, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
SendMessage(h, WM_SYSCOMMAND, SC_MONITORPOWER, -1);

在我的笔记本电脑上(Win8.1+Visual Studio 2010):对于这两个版本,关闭有效,但开启无效。当执行开启代码时,屏幕会立即打开然后再次关闭。

还有一件有趣的事情:在我的桌面上(Win8.1+VS2013),程序会卡在版本1的任意一行。但是,它可以通过版本2。关闭可以,但打开完全无效。

最佳答案

WM_SYSCOMMANDSC_MONITOR 似乎无法唤醒显示器,因为 Windows 8 具有更高级的节能功能,而 sleep 工作正常。

您也可以在核心系统级别触发鼠标的小移动来正确触发唤醒,示例代码采用 C#,但应该可以轻松移植到 C++:

void Main( object )
{
int MOUSEEVENTF_MOVE = 0x0001;

mouse_event(MOUSEEVENTF_MOVE, 0, 1, 0, UIntPtr.Zero);
System.Threading.Thread.Sleep( 40 );
mouse_event(MOUSEEVENTF_MOVE, 0, -1, 0, UIntPtr.Zero);
}

Documentation 。正式地你应该使用 SendInput ,但是 mouse_event 不会很快消失(自 Vista 以来它已被半弃用)。

关于winapi - 关闭/打开显示器 : can't turn on,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25011141/

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