gpt4 book ai didi

c++ - 如何关闭Win8平板电脑的显示

转载 作者:太空宇宙 更新时间:2023-11-04 14:06:49 25 4
gpt4 key购买 nike

有没有办法在不将平板电脑置于 sleep 模式的情况下关闭 Win8 平板电脑的显示?

我使用以下 C++ 代码,但此代码将平板电脑置于 sleep 模式:

const LPARAM OFF = 2;
// const LPARAM LOW = 1;
const LPARAM ON = -1;
LPARAM state = 0;

if (monitorOn) state = ON; // set monitor on
else state = OFF; // set monitor off

SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, state);

我们需要在显示器关闭时创建一个新的 VNC 连接。但是我们不能在平板电脑处于 sleep 模式时这样做。此外,功能监视器(请参阅上面的代码)在 sleep 模式下不起作用...

有人知道我怎么只能关闭Win8平板电脑的显示吗?

最佳答案

您可以尝试使用 Power Management API使计算机在进入休眠状态时保持打开状态。我不确定当计算机处于这种状态时您是否仍然可以使用 VNC 进行连接,但值得一试。

#include <atlbase.h>
#include <atlutil.h>
#include <powrprof.h>

#pragma comment(lib, "PowrProf.lib")

#include <iostream>

using namespace std;

int main()
{
try
{
POWER_REQUEST_CONTEXT context;
context.Version = POWER_REQUEST_CONTEXT_VERSION;
context.Flags = POWER_REQUEST_CONTEXT_SIMPLE_STRING;
context.Reason.SimpleReasonString = L"Turn screen off";

CHandle powerRequest(PowerCreateRequest(&context));
if(powerRequest == INVALID_HANDLE_VALUE)
AtlThrowLastWin32();

if(!PowerSetRequest(powerRequest, PowerRequestAwayModeRequired))
AtlThrowLastWin32();

if(!SetSuspendState(FALSE, FALSE, FALSE))
AtlThrowLastWin32();

if(!PowerSetRequest(powerRequest, PowerRequestAwayModeRequired))
AtlThrowLastWin32();

return 0;
}
catch (const CAtlException &e)
{
wcout << "Error: " << AtlGetErrorDescription(e).GetString() << endl;

return e.m_hr;
}
}

关于c++ - 如何关闭Win8平板电脑的显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16518347/

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