有没有办法在不将平板电脑置于睡眠模式的情况下关闭Win8平板电脑的显示器?
我使用以下C ++代码,但此代码将平板电脑置于睡眠模式:
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连接。但是,当平板电脑处于睡眠模式时,我们无法做到这一点。功能监视器(参见上面的代码)在睡眠模式下也不起作用......
有人知道我怎么只能关掉Win8平板电脑的显示器吗?
答案 0 :(得分:0)
您可以尝试使用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;
}
}