Показать сообщение отдельно
  #2  
Старый 08.01.2018, 10:07
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Вот на х64 работает, на х32 нет возможности проверить - на виртуалке только WindowsXP, а там и не будет работать:

Код:
function PowerEnumerate(RootPowerKey: HKEY;
  SchemeGuid: PGUID; SubGroupOfPowerSettingsGuid: PGUID;
  AccessFlags: DWORD; Index: ULONG;
  Buffer: Pointer; var BufferSize: DWORD): DWORD;
  stdcall; external 'powrprof.dll';

function PowerReadFriendlyName(
  RootPowerKey: HKEY;
  SchemeGuid: PGUID; SubGroupOfPowerSettingsGuid: PGUID;
  PowerSettingGuid: PGUID;
  Buffer: Pointer; var BufferSize: DWORD
): DWORD; stdcall; external 'powrprof.dll';

const
  ACCESS_SCHEME = 16;

procedure TForm1.FormCreate(Sender: TObject);
var
  Buffer: TGUID;
  BufferSize: DWORD;
  LIndex: ULONG;
  LPowerEnumerate: DWORD;
  BufferName: array [0..$FF] of Char;
begin
  LIndex:=0;
  repeat
    BufferSize:=SizeOf(TGUID);
    LPowerEnumerate:=PowerEnumerate(0, nil, nil, ACCESS_SCHEME,
      LIndex, @Buffer, BufferSize);
    if LPowerEnumerate=ERROR_SUCCESS then
    begin
      Memo1.Lines.Add(GUIDToString(Buffer));
      BufferSize:=Length(BufferName);
      if PowerReadFriendlyName(0, @Buffer, nil, nil,
        @BufferName[0], BufferSize)<>ERROR_SUCCESS then RaiseLastOSError;
        Memo1.Lines.Add(BufferName);
    end;
    Inc(LIndex);
  until LPowerEnumerate<>ERROR_SUCCESS;
end;

Результат:

Цитата:
{381B4222-F694-41F0-9685-FF5BB260DF2E}
Сбалансированная
{8C5E7FDA-E8BF-4A96-9A85-A6E23A8C635C}
Высокая производительность
{A1841308-3541-4FAB-BC81-F71556F20B4A}
Экономия энергии
__________________
Пишу программы за еду.
__________________
Ответить с цитированием