Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何关闭Win8平板电脑的显示_C++_Windows_Winapi_Windows 8_Tablet - Fatal编程技术网

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

C++ 如何关闭Win8平板电脑的显示,c++,windows,winapi,windows-8,tablet,C++,Windows,Winapi,Windows 8,Tablet,有没有办法在不将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

有没有办法在不将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连接。但我们不能在平板电脑处于睡眠模式时这样做。此外,监视器on功能(请参阅上面的代码)在睡眠模式下不工作

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

您可以尝试在电脑进入睡眠状态时使用来保持电脑处于开机状态。我不确定当计算机处于这种状态时,是否仍然可以使用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;
  }
}
#包括
#包括
#包括
#pragma注释(lib,“powrpof.lib”)
#包括
使用名称空间std;
int main()
{
尝试
{
电源请求上下文;
context.Version=POWER\u REQUEST\u context\u Version;
context.Flags=POWER\u REQUEST\u context\u SIMPLE\u STRING;
context.Reason.SimpleReasonString=L“关闭屏幕”;
CHandle powerRequest(PowerCreateRequest(&context));
if(powerRequest==无效的\u句柄\u值)
AtlThrowLastWin32();
如果(!PowerSetRequest(powerRequest,PowerRequestAwayRequested))
AtlThrowLastWin32();
如果(!SetSuspendState(FALSE,FALSE,FALSE))
AtlThrowLastWin32();
如果(!PowerSetRequest(powerRequest,PowerRequestAwayRequested))
AtlThrowLastWin32();
返回0;
}
捕获(常量CAtlException&e)
{
wcout不清楚“Win8平板电脑”可能意味着什么。你当然不能为启动Windows RT的平板电脑编写这样的代码。一定要用WACK检查你的代码。在我们的情况下,这是一款“华硕VivoTab智能”。在这台平板电脑上,在真正的Windows机器上运行真正的Windows 8,而不是Windows RT。