Einzelnen Beitrag anzeigen

Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#20

Re: energiesparplan unter vista ändern

  Alt 16. Jan 2009, 13:55
Da ich das ganze auch mal für XP gemacht habe will ich das nun nicht verheimlichen
Delphi-Quellcode:
type
  WRSCHEMESENUMPROC = function(uiIndex: UINT; dwName: DWORD; sName: PWideChar;
    dwDesc: DWORD; sDesc: PWideChar; pp: Pointer; lParam: LPARAM): BOOLEAN; stdcall;
  {$EXTERNALSYM PWRSCHEMESENUMPROC}
  PWRSCHEMESENUMPROC = ^WRSCHEMESENUMPROC;


{$EXTERNALSYM SetActivePwrScheme}
function SetActivePwrScheme(uiID: UINT; lpGlobalPowerPolicy: Pointer;
  lpPowerPolicy: Pointer): BOOL; stdcall; external PWR_PROF;
{$EXTERNALSYM EnumPwrSchemes}
function EnumPwrSchemes(lpfnPwrSchemesEnumProc: PWRSCHEMESENUMPROC;
  lParam: LPARAM): BOOL; stdcall; external PWR_PROF;
Bei SetActivePwrScheme werden eigentlich Zeiger auf eine GLOBAL_POWER_POLICY bzw. eine POWER_POLICY übergeben... hab ich aber mal weggelassen. (Kann bei Bedarf nachgereicht werden...)
Was das Aufzählen angeht: Das funktioniert hier mit einem Callback. Das Beispiel mit dem Memo würde dann etwa so aussehen:
Delphi-Quellcode:
function XPEnumSchemes(uiIndex: UINT; dwName: DWORD; sName: PWideChar;
  dwDesc: DWORD; sDesc: PWideChar; pp: Pointer; lParam: LPARAM): BOOLEAN; stdcall;
begin
  Form.Memo.Lines.Add(IntToStr(uiIndex) +' '+ sName +' --> '+ sDesc);
  Result := True;
end;

procedure TForm1.ButtonClick(Sender: TObject);
var clb: WRSCHEMESENUMPROC;
begin
  clb := XPEnumSchemes;
  EnumPwrSchemes(@clb, 0);
end;
Hoffe das funktioniert und ist auch richtig... Viel Spaß damit
Jan
  Mit Zitat antworten Zitat