使用 winAPI 设置窗口的高性能电源计划C++

Setting On windows' High Performance power plan using C++ winAPI

本文关键字:电源 计划 C++ 高性能 winAPI 设置 窗口 使用      更新时间:2023-10-16

编写了一个代码,试图通过C 中的Winapi激活Windows的高完善力量计划。除了我感兴趣的高性能计划外,它似乎对所有电力计划(在我的航站楼都被称为平衡,避免电力和戴尔)似乎都很好!我希望代码能够完成所有功率计划,并且在找到高性能时,就会将其设置起来然后退出。如果有人可以帮助我,请将我的代码放在下面。预先感谢!

#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"%sn", (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);