SendMessage/SC_MONITORPOWER won#39;t turn monitor ON when running Windows 8(SendMessage/SC_MONITORPOWER 在运行 Windows 8 时不会打开监视器)
问题描述
我使用以下代码打开和关闭显示器:
I turn my monitors on and off by using the following code:
[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
private const int WM_SYSCOMMAND = 0x0112;
private const int SC_MONITORPOWER = 0xF170;
private const int MonitorTurnOn = -1;
private const int MonitorShutoff = 2;
//Turn them off
SendMessage(f.Handle, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)MonitorShutoff);
//Turn them on
SendMessage(f.Handle, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)MonitorTurnOn);
这曾经按预期工作,但在安装 Windows 8 之后(我假设这个是原因,因为我看到其他人也有同样的问题)打开屏幕不起作用.我仍然可以将其关闭,但无论我使用 MonitorTurnOn 运行 SendMessage() 多少次,我仍然需要移动鼠标或按键才能重新打开监视器.
This used to work as intended, but after installing Windows 8 (I assume this is the reason, since I see others have the same issue) turning the screen on won't work. I can still turn it off, but no matter how many times I run SendMessage() with MonitorTurnOn, I still have to move the mouse or press a key to get the monitors back on.
关于如何在 Windows 8 上进行这项工作的任何建议?
Any suggestions on how to make this work on Windows 8?
推荐答案
我遇到了同样的问题,我找到的解决方案是移动鼠标:
I had the same problem, the solution I found is to move the mouse :
mouse_event(MOUSEEVENTF_MOVE, 0, 1, 0, NULL);
Sleep(40);
mouse_event(MOUSEEVENTF_MOVE, 0, -1, 0, NULL);
它将唤醒显示器.早珠
这篇关于SendMessage/SC_MONITORPOWER 在运行 Windows 8 时不会打开监视器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:SendMessage/SC_MONITORPOWER 在运行 Windows 8 时不会打开监视器
- C# 中多线程网络服务器的模式 2022-01-01
- 如何用自己压缩一个 IEnumerable 2022-01-01
- 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
- 输入按键事件处理程序 2022-01-01
- MoreLinq maxBy vs LINQ max + where 2022-01-01
- C#MongoDB使用Builders查找派生对象 2022-09-04
- 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01
- WebMatrix WebSecurity PasswordSalt 2022-01-01
- 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01
- Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01