Autor Beitrag
kongreddgrass
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 238

Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
BeitragVerfasst: Fr 29.08.03 21:34 
Hi,
ich steh vor einem Problem.
Ich habe nur einen Button.
Wenn ich Windows herunterfahren will, betätige ich den Button und es soll herunterfahren. Nun ja, ich betätige es und es kommt eine Fehlermeldung,
aber Windows wird schon runtergefahren
Weiß jemand was?
ausblenden Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
ExitWindowsEx (EWX_SHUTDOWN or EWX_POWEROFF, $FFFFFFFF);
end;


Gruß
Mike

_________________
o.o


Zuletzt bearbeitet von kongreddgrass am Sa 06.09.03 22:18, insgesamt 1-mal bearbeitet
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Fr 29.08.03 21:39 
Also Luckie würde dir jetzt seine Glaskugel um die Ohren hauen. Welche Meldung bekommst du denn?

Ich weiß im Moment nur eins: Wenn du die gleiche Funktion benutzt, auf die ich hier im Forum verwiesen wurde, dann sind deine Parameter verkehrt. Dann muß es entweder

ausblenden Delphi-Quelltext
1:
ExistWindowsEX(EWX_SHUTDOWN);					


oder

ausblenden Delphi-Quelltext
1:
ExitWindowsEX(EWX_POWEROFF);					


heißen. Wozu du den dritten Parameter eingebaut hast, ist mir schleierhaft, aber am Besten teilst du uns mal die Fehlermeldung mit und postest ggf. noch die Funktion ExitWindowsEx, so wie du sie in dein Programm integriert hast. Danke..

_________________
Hasta La Victoria Siempre
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 29.08.03 21:39 
Ich habe die Funktion noch nie benutzt, jedoch steht im Platform SDK, dass der letzte Parameter einer der vorgegeben "Reason-Codes" sein muss. Für Dich würde wahrscheinlich "Application issue" passen:
SHTDN_REASON_MAJOR_APPLICATION

Wie gesagt, ausprobiert habe ich es nicht.

//Edit: das mit dem Reasencode scheint doch nciht so einfach zu sein. Sorry.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
kongreddgrass Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 238

Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
BeitragVerfasst: Fr 29.08.03 21:56 
Ich habe jetzt bei mir das or und den Dollar+Dieses Zeichen weggemacht.
Jetzt funktionierts auf jeden Fall

Gruß
Mike

_________________
o.o
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 29.08.03 22:08 
Der zweite Parameter wird aber bei OS kleiner XP ignoriert. Früher stand da:
Zitat:

Reserved for future use.
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Fr 29.08.03 22:11 
Also in den FAQ (der Beitrag von Tino) steht das zwar mit den F's aber da steht auch, daß das nur u.U. für XP von Bedeutung ist. Ich wurde damals auf einen Code verwiesen, da wurden diese Parameter nicht gebraucht und das du ein OR dazwischen gesetzt hast, ist einfach falsch. Entweder EWX_SHUTDOWN oder EWX_POWEROFF, wobei Shutdown den PC nur runterfährt und Poweroff auch den PC ausschaltet, sofern der PC das mit sich machen läßt. Das hätte aber in der Anleitung stehen müssen. Schau nochmal nach.

PS: Übrigens kannst du jetzt ein gelöst hinter deinen Thread setzen; schließlich ist er nicht ungelöst, wie jetzt noch dort steht.
PPS: Was machst du eigentlich noch hier? Ich denke, du bist in Urlaub..

_________________
Hasta La Victoria Siempre
Ex0rzist
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: Sa 30.08.03 18:34 
Die Parameter können sehr wohl per or miteinander verknüpft werden.
Das kann man testen.
Starte ein Programm, dass beim Schliessen eine Meldung ausgibt (z.B. "Nichtgespeicherte Daten speichern?"). Dann probiere mal das aus:
ausblenden Delphi-Quelltext
1:
ExitWindowsEx(EWX_SHUTDOWN,0);					

Windows wird sich nicht herunterfahren, da das Programm beim Schliessen diese Frage zeigt und an Windows nicht das Ok zum Herunterfahren sendet.

Wenn du allerdingsExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE,0); verwendest, werden alle Anwendungen geschlossen und Windows wird anschliessend heruntergefahren.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 30.08.03 19:09 
Hallo, Ex0rzist!

Was Du schreibst, ist nur zum Teil richtig. Die Verknüpfung mit OR, welche Du gepostet hast, macht Sinn, denn der letzte Parameter ist ein optionaler Parameter.
Eine Verknüpfung von Werten, die in der Tabelle der nicht-optionalen Parameter stehen (wie im Code von kongreddgrass), macht keinen Sinn!

MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Ex0rzist
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: Sa 30.08.03 19:51 
Hallo,

diese spezielle Verknüpfung ist in der Tat sinnlos, jedoch nicht falsch - wie Terra23 behauptet hat.

_________________
If accidentally read, induce vomitting.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 30.08.03 20:18 
Okay, ja, da hast Du recht.

MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Sa 30.08.03 20:19 
... in meinen Augen schon, denn es kann doch entweder das eine oder das andere gemacht werden und "OR" klingt, als könne sich der PC was aussuchen. Aber gut, dann ist es nicht falsch sondern ohne Sinn..

_________________
Hasta La Victoria Siempre
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 30.08.03 20:51 
Das OR in diesem Fall ist ja auf Integer angewendet und nicht auf Wahrheitswerte (mal abgesehen von den Bits, die damit bearbeitet werden). EWX_SHUTDOWN or EWX_FORCE heißt ja auch nicht "runterfahren oder erzwingen".

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 30.08.03 21:27 
@Terra: Müsstest du doch vielleicht von MessageBoxen kennen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
MessageBox(self.Handle,
  'Hallo, Welt!',
  nil,
  MB_OK or MB_ICONINFORMATION);

Das or ist, wie Peter schon richtig schrieb, in dem Fall kein Vergleich, sondern bedeutet, dass die beiden Werte MB_OK und MB_ICONINFORMATION bitweise verknüpft werden. Und and not ist das Gegenstück davon.

Wieder was gelernt. :wink: Brauchst aber heute nicht in die Ecke ...
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 30.08.03 21:55 
Na ja solange man seine Messageboxen so
ausblenden Delphi-Quelltext
1:
2:
3:
4:
MessageBox(self.Handle, 
  'Hallo, Welt!'
  nil
  16);

erstellt spielt das doch keine Rolle. :roll:
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Sa 30.08.03 22:21 
Na gut, wieder was gelernt. Danke euch... :-)

_________________
Hasta La Victoria Siempre