AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Smart Shutdown Manager
Thema durchsuchen
Ansicht
Themen-Optionen

Smart Shutdown Manager

Ein Thema von VHPD-BennyS · begonnen am 12. Mai 2008 · letzter Beitrag vom 2. Jul 2008
Antwort Antwort
MP3Freak

Registriert seit: 1. Jul 2008
Ort: irgendwo östlich von München
5 Beiträge
 
#1

Re: Smart Shutdown Manager

  Alt 1. Jul 2008, 11:15
Servus,
bin überrascht das des auch unter Ubuntu funzt.
Mit welcher Wine-Version war das?
Bzw. warst du als Root angemeldet oder als normaler Benutzer?

Ich werd dein Proggi ma unter OpenSuse probieren,
weil ich da ein Problem hab von Delphi aus die Kiste herunterzufahren.

Haste da zwecks Linux noch was spezielles eingebaut?
Folgender Code geht unter Windoof prima, hat aber eben unter Linux nicht funktioniert (einfach nix passiert)
weil Wine diesen API aufruf offenbar net an das System weitergibt.

Delphi-Quellcode:
 function ExWindows(const AFlag: Word; f9x, fnt, debug:boolean): Boolean;
 var
   vi : TOSVersionInfo;
   hToken : THandle;
   tp : TTokenPrivileges;
   h : DWord;
 begin
  result:= false;

  {wenn keiner der modi erzwungen ist, automatisch wählen}
  if (f9x = false) and (fnt = false) then
  begin;
   vi.dwOSVersionInfoSize:=SizeOf(vi);
   if GetVersionEx(vi) then
   begin
    if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then
    begin
     fnt:= true;
    end
    else
    begin;
     f9x:= true;
    end;
   end;
  end;

  if debug=true then
  begin;
   if fnt=true then showmessage('NT System');
   if f9x=true then showmessage('9x System');

   if messagedlg('Wirklich ausführen?', mtconfirmation, [mbyes]+[mbno], 0) <> mryes then exit;
  end;

  {Ausführen (NT)}
  if fnt=true then
  begin;
      // Windows NT
      // Achtung bei Delphi 2 muß @hToken stehen ...
      if OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES,hToken) then
      begin
        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);
        result := ExitWindowsEx(Aflag, 0);
        exit; {wichtig}
      end;
  end;

  {Ausführen (9x)}
  if f9x = true then
  begin // Windows 9x
      Result := ExitWindowsEx(Aflag, 0);
      exit; {wichtig}
  end;

 end; {of exitwindows}
Gruß
Peter
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz