Delphi-PRAXiS

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 ^^

TeronG 19. Mai 2006 12:20

Re: ShutDown Problem
 
*push* waren das nun 24h oder 24 Tage pause bis zum pushen :gruebel: :mrgreen:

danku 6. Jul 2006 18:46

Re: ShutDown Problem
 
habs genauso wie im #4 gemacht aber keine wirkung :?

nach einem countdown wird ein button automatisch geklickt mit folgendem code:

Delphi-Quellcode:
//case mag ich nicht so ;)
if lboff.itemindex=0
  then ExWindows('', ewx_poweroff)      //Beenden
    else if lboff.itemindex=1
     then ExWindows('', ewx_reboot )    //Neustart
      else if lboff.itemindex=2
       then ExWindows('', ewx_logoff ); //Logoff
end;
was ist daran falsch?

Luckie 6. Jul 2006 22:35

Re: ShutDown Problem
 
Zitat:

Zitat von danku
case mag ich nicht so ;)

Solltest du aber:
Delphi-Quellcode:
case lboff.itemindex of
0: ExWindows('', ewx_poweroff);
1: ExWindows('', ewx_reboot );
2: ExWindows('', ewx_logoff );
end;
Was kann man daran bitte jetzt nicht mögen?

BTW debugg das mal und guck, ob er überhaupt in den entsprechenden Zweig (if/case) reinspringt.

danku 7. Jul 2006 16:19

Re: ShutDown Problem
 
ich weiß so hatte ich es auch schon aber ist nicht eine if-anweisung schöner? ;)
verschachtelt ohne ende. case geht schon..

pacman1986 7. Jul 2006 17:03

Re: ShutDown Problem
 
Zitat:

Zitat von danku
ich weiß so hatte ich es auch schon aber ist nicht eine if-anweisung schöner? ;)
verschachtelt ohne ende. case geht schon..

das nenne ich mal hardcoden :P

danku 7. Jul 2006 18:15

Re: ShutDown Problem
 
Back to the topic please.
warum funzt die case nicht.
wäre eine ShellExecute besser?

ManuMF 7. Jul 2006 20:34

Re: ShutDown Problem
 
Hallo,

weil du in Zeile 533 ein "end" vergessen hast. :cyclops:

Nein, kleiner Scherz. Schreib doch mal, was daran nicht funktioniert, sonst ist dir nicht zu helfen ;-)

Gruß,
ManuMF

danku 7. Jul 2006 20:57

Re: ShutDown Problem
 
hab mir selber geholfen ;)
es gab ein problem mit der tlistbox.
irgendwie verstand der nicht .itemindex.
die gleiche methode bei einer tcombobox funzt einwandfrei.

Luckie 8. Jul 2006 00:41

Re: ShutDown Problem
 
Zitat:

Zitat von danku
ich weiß so hatte ich es auch schon aber ist nicht eine if-anweisung schöner? ;)
verschachtelt ohne ende. case geht schon..

Na wenn dir eine ohne Ende verschachtelte if-Abfgare leiber ist, wo man nach zwei Minuten scho nnicht mehr durchblickt und schon gar nicht nur vom draufgucken, dann bitte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 Uhr.

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