c++ - 使用 C++ winAPI 设置 Windows 的高性能电源计划

标签 c++ c winapi

我写了一段代码,试图通过 C++ 中的 winAPI 激活 Windows 的高性能电源计划。它似乎适用于所有电源计划(在我的终端中它们被称为 Balanced、Power saver 和 Dell),除了我感兴趣的那个,即高性能计划!我希望代码遍历所有电源计划,并在找到高性能时将其设置为打开然后退出。我把我的代码放在下面,以防有人能帮助我。提前致谢!

#include <windows.h>
#include <powrprof.h>
#include <iostream>
#include "stdio.h"
#include <ntstatus.h>
#include <string>
#pragma comment(lib, "powrprof.lib")

using namespace std;


int main(int argc, char **argv) {


//////////////////  SET ACTIVE HIGH PERFORMANCE PLAN  ///////////////////


//Variables
UCHAR displayBuffer[64] = " ";
DWORD displayBufferSize = sizeof(displayBuffer);
GUID buffer;
DWORD bufferSize = sizeof(buffer);

//Go throught the machine's power plans and activate the high performance one
for(int index = 0; ; index++)
{

    if (ERROR_SUCCESS == PowerEnumerate(NULL,NULL,&GUID_VIDEO_SUBGROUP,ACCESS_SCHEME,index,(UCHAR*)&buffer,&bufferSize) )
    {
        if (ERROR_SUCCESS == PowerReadFriendlyName(NULL,&buffer,&NO_SUBGROUP_GUID,NULL,displayBuffer,&displayBufferSize) )
        {
            wprintf(L"%s\n", (wchar_t*)displayBuffer);


            if( 0 == wcscmp ( (wchar_t*)displayBuffer, L"High Performance" ) )
            {
                cout << "High Performance Plan Found!\n";
                if (ERROR_SUCCESS == PowerSetActiveScheme(NULL,&buffer) )
                {
                cout << "* Setting Active High Performance Power Plan *";
                //std::cin.get(); //pause
                break;
                }

            }
        }

    }
    else break;
}


return 0;

最佳答案

这可以更容易地完成:

PowerSetActiveScheme(0, &GUID_MIN_POWER_SAVINGS);

关于c++ - 使用 C++ winAPI 设置 Windows 的高性能电源计划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13007925/

相关文章:

c++ - Qt全局样式表加载?

C++在函数模板中传递函数指针

为 ARM M4 编译和链接位置独立代码 (PIC)

c++ - 线程在 UI 更新之前启动

c++ - 邮寄消息 : How to post a message to a process that does not have a window?

winapi - 如何捕获正在播放的音频?

C++:Boost:如何检查我的工作目录中另一个文件夹中是否存在一个文件夹?

c++ - C Char 数组创建差异

c - libmpdclient : detect lost connection to MPD daemon

C 为什么 3 除以 2 在一个 int 中等于 0,而在另一个 int 中等于 1?