Thema: Delphi Ruhezustand auslösen

Einzelnen Beitrag anzeigen

MazeBandit

Registriert seit: 21. Nov 2005
Ort: Berlin
3 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Ruhezustand auslösen

  Alt 22. Nov 2005, 08:09
@faux: erstmal danke für den Tipp, ich hab das Ganze folgendermaßen umgesetzt:

Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
(...)

Delphi-Quellcode:
function ExitWin(flag:word): Boolean;
var vi : TOSVersionInfo;
    hToken : THandle;
    tp : TTokenPrivileges;
    h : DWord;
(...)

Delphi-Quellcode:
    OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,hToken);
    LookupPrivilegeValue(nil,'SeShutdownPrivilege',tp.Privileges[0].Luid);
    tp.PrivilegeCount := 1;
    tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    h := 0;
    AdjustTokenPrivileges(hToken,False,tp,0,PTokenPrivileges(nil)^,h);
    CloseHandle(hToken);
(...)

Delphi-Quellcode:
    if flag = 0 then
      result := setsystempowerstate(true,true);
  end
Für das Tool übergebe ich mit flag entweder die Werte für das Herunterfahren, Neustarten etc. oder eben den Wert 0 für Standby und 1 für den Ruhezustand...

Obwohl ich ein Delphi - 32 Projekt gestartet habe (sonst würde ja auch das Herunterfahren nicht funktionieren), kann ich trotzdem weder den Ruhezustand noch den Standbyzustand herbeirufen.

Ist eventuell ein Fehler im Code, den ich aus Betriebsblindheit übersehen habe?

Maze
  Mit Zitat antworten Zitat