Autor |
Beitrag |
kongreddgrass
      
Beiträge: 238
Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
|
Verfasst: 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?
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
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: 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
Delphi-Quelltext 1:
| ExistWindowsEX(EWX_SHUTDOWN); |
oder
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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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 
      
Beiträge: 238
Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
|
Verfasst: 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
|
Verfasst: 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
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: 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
      
Beiträge: 550
Win XP Prof. Mandrake 10.0
D6
|
Verfasst: 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:
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 allerdings ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE,0); verwendest, werden alle Anwendungen geschlossen und Windows wird anschliessend heruntergefahren.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
      
Beiträge: 550
Win XP Prof. Mandrake 10.0
D6
|
Verfasst: 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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: 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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
|
Verfasst: Sa 30.08.03 21:27
@Terra: Müsstest du doch vielleicht von MessageBoxen kennen:
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.  Brauchst aber heute nicht in die Ecke ...
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 30.08.03 21:55
Na ja solange man seine Messageboxen so
Delphi-Quelltext 1: 2: 3: 4:
| MessageBox(self.Handle, 'Hallo, Welt!', nil, 16); |
erstellt spielt das doch keine Rolle. 
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Sa 30.08.03 22:21
Na gut, wieder was gelernt. Danke euch... 
_________________ Hasta La Victoria Siempre
|
|