Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ShutDown Problem (https://www.delphipraxis.net/18030-shutdown-problem.html)

CReber 13. Mär 2004 01:52


ShutDown Problem
 
1: ExitWindowsEx(EWX_SHUTDOWN, 0);
2: ExitWindowsEx(EWX_REBOOT, 0);

Hab folgendes Problem... EWX_SHUTDOWN macht gar nix (genauso wie reboot) und FORCE meldet das system ab anstatt es runterzufahren ..

system:

winXP SP1 2002

kann mir da jemand helfen?

Luckie 13. Mär 2004 02:11

Re: ShutDown Problem
 
Hast du dir auch vorher die Rechte geholt? Kuck dir dazu mal den entsprechenden Beitrag in der Code-Lib an.

CReber 13. Mär 2004 11:59

Re: ShutDown Problem
 
EWX_FORCE meldet aber immernoch nur ab ?! :( FORCE ist doch herunterfahren mit dem zusatz das speicherungsabfragen ignoriert werden oder?

Der-DeeJay 13. Mär 2004 12:35

Re: ShutDown Problem
 
Hi

Ich glaube du hast vergessen die Funktion zu benutzen

Delphi-Quellcode:
function ExWindows(const AQuestion: string; flag: word): Boolean;
var
  vi    : TOSVersionInfo;
  hToken : THandle;
  tp    : TTokenPrivileges;
  h     : DWord;
begin
  result := false;
  if Aquestion='' then
  vi.dwOSVersionInfoSize:=SizeOf(vi);
  GetVersionEx(vi);
  if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then
  begin
    // Windows NT
    // Achtung bei Delphi 2 muß @hToken stehen ...
    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);
    result := ExitWindowsEx(flag,0);
  end
  else
  begin
    Result := ExitWindowsEx(flag,0);
  end;
end;
und dann so benutzen:

Delphi-Quellcode:
ExWindows('', ewx_poweroff); //Beenden
ExWindows('', ewx_reboot ); //Neustart
ExWindows('', ewx_logoff ); //Logoff
bei mir hats so funktioniert
hoffe das es bei dir nun auch was wird ;]

Schwedenbitter 7. Apr 2004 22:55

Re: ShutDown Problem
 
Mal 'ne ganz blöde Frage:
Delphi-Quellcode:
If ...
.
.
.
    result := ExitWindowsEx(flag,0);
  end
  else // Windows 95 
  begin
    Result := ExitWindowsEx(flag,0);
  end;
end;
Kann man da "result := ExitWindowsEx(flag,0);" nicht auch außerhalb der If-Abfrage machen? Schließlich unterscheidet sich der Code insofern überhaupt nicht.

NicoDE 8. Apr 2004 00:19

Re: ShutDown Problem
 
Zitat:

Zitat von hOnkibOnk
EWX_FORCE meldet aber immernoch nur ab ?!

Weil es ein zusätzliches Flag ist.
EWX_SHUTDOWN or EWX_FORCE // or = das Ergebnis enthält die Bits beiden Operanden
(Zu gut Deutsch 'Erzwinge das Herunterfahren'. EWX_REBOOT or EWX_FORCE bedeutet dann logischerweise 'Erzwinge einen Neustart')

MathiasSimmack 8. Apr 2004 07:30

Re: ShutDown Problem
 
Zitat:

Zitat von Schwedenbitter
Mal 'ne ganz blöde Frage: [...] Kann man da "result := ExitWindowsEx(flag,0);" nicht auch außerhalb der If-Abfrage machen? Schließlich unterscheidet sich der Code insofern überhaupt nicht.

Klar, kann man. ;) Ich benutze bspw. eine komplett separate Funktion zum Holen oder Abschalten der Rechte. Die sieht im Prinzip so aus wie die Vorlage von Der-DeeJay, nur der Code zum Herunterfahren fehlt. Es wäre ja möglich, dass man auch für andere Zwecke mal bestimmte Rechte benötigt.

StefanDP 11. Apr 2004 22:44

Re: ShutDown Problem
 
wenn es nur unter windows xp funktionieren soll/kann kannst du folgendes machen:
Delphi-Quellcode:
ShellExecute(Handle, 'open', 'shutdown.exe', '-r -t 10 -c "Der Computer wird gleich neugestartet!" -f', nil, SW_SHOW);
mfg
stefan

MathiasSimmack 12. Apr 2004 08:42

Re: ShutDown Problem
 
Bei allem Respekt, @StefanDP, aber es ist doch besser, den dafür vorgesehenen Befehl zu verwenden. Der funktioniert unter allen Windows-Versionen, nicht nur unter XP. Und das Abschreiben der Rechte-Funktion ist sicher auch nicht das Problem. ;)

TeronG 17. Mai 2006 16:48

Re: ShutDown Problem
 
Also ExWindows() klappt ja soweit ganz gut ... nur seit "neuestem" giebt es ja die möglichkeit updates vor dem PowerOff zu installieren.
(Start -> Herunterfahren -> Updates installieren und herunterfahren)

Wie kann ich das nun mit ExWindows() machen?
Wenn ich nur sporadisch die Updates installiere bekomm ich noch mal ärger ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:19 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz