Autor Beitrag
-=[noname]=-
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 04.12.02 19:09 
mit der folgenden funktion soll es möglich sein den Computer herrunter zu fahren aber irgendwie! Naja jedenalls nich unter XP!

ExitWindowsEx(EWX_SHUTDOWN,0);

Hat einer ne andere Variante oder ne Idee was man machen kann? oder liegts eventuell an meiner Delphi Version?? ich hab nur 3.0!

Danke schonmal

_________________
Spass ist was ihr draus macht!
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 04.12.02 19:23 
Zitat:
oder liegts eventuell an meiner Delphi Version?? ich hab nur 3.0!

Ja, es liegt eindeutig an deiner Delphi-Version ... :roll: ... Mal im Ernst, hat einer gezählt, wie oft diese Frage nun schon beantwortet werden musste?

Lieber -=[noname]=-, es gibt eine fantastische Suchfunktion. Und ich garantiere dir guten Gewissens, dass du die Lösung für dein Problem findest. Es liegt nämlich nicht an deiner Delphi-Version.

Und der Code ist grundlegend auch richtig. Man muss eben nur noch bedenken, dass XP ein OS auf NT-Basis ist. Da darf nicht jeder alles.

So, das sind genug Infos zum Suchen.
Ghost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Mo 16.12.02 17:40 
Hi,

das liegt an XP. Bei mir funktionietr das auch nicht mehr.
Kannst es aber mit:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
function ExWindows(const AQuestion: string; flag: word): Boolean;
var
  vi     : TOSVersionInfo;
  hToken : THandle;
  tp     : TTokenPrivileges;
  h      : DWord;
begin
  result := false;
  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 // Windows 95
    Result := ExitWindowsEx(flag,0);
  end;
end;

ausblenden Quelltext
1:
ExWindows('Beenden', ewx_poweroff);					

probieren. Das klappt bei mir.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 16.12.02 18:14 
Sag mal Jungs was spielt ihr eigentlich für ein Spiel mit mit? "Such den übegeben Parameter" oder was? :shock:
ausblenden Quelltext
1:
function ExWindows(const AQuestion: string; flag: word): Boolean;					

Ich kann in der Funktion den übergebenen Parameter AQuestion nirgens wieder finden. Das ist jetzt schon der zweite Code den ich heute sehe, wo das der Fall ist. :roll:

Da drämgt sich mir echt die Frage auf, ob ihr euch eigentlich den Code mal ankuckt, den ihr per copy and paste in euren Programmen benutzt. :o
Ghost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Mo 16.12.02 20:15 
Das ist eine vorgesehen Variable für eine Frage zum Beenden.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 16.12.02 21:04 
Und wo ist die Frage bitte sehr? :shock:
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 16.12.02 21:16 
@Ghost: Luckie meinte den String "Beenden" in der Zeile
ausblenden Quelltext
1:
ExWindows('Beenden', ewx_poweroff);					

Diese Variable
ausblenden Quelltext
1:
const AQuestion: string;					

wird nicht in der Funktion benutzt. Du könntest sie ebenso gut weglassen. Dieses Beispiel stammt meines Wissens nach aus dem alten EDH. Ich denke mal, der Tippeinsender wird sicher eine Frage benutzt haben, etwa
Zitat:
Wollen Sie wirklich beenden?

o.ä., aber weil er einen universellen Tipp abgeben wollte, hat er das rausgenommen und dabei die Variable im Funktionskopf vergessen.

Außerdem ist deine Aussage
Ghost hat folgendes geschrieben:
das liegt an XP. Bei mir funktionietr das auch nicht mehr.

falsch! Es liegt nicht an XP, sondern an mangelnden Rechten. Es funktioniert tadellos - wenn man sich eben die benötigten Rechte holt. Und genau das macht dein Codebeispiel ja auch. Also, bitte nicht auf´s Betriebssystem schieben!

Und zu guter Letzt, deine Aussage:
Zitat:
Das ist eine vorgesehen Variable für eine Frage zum Beenden.

Du beziehst dich dabei auf EWX_POWEROFF.
PSDK hat folgendes geschrieben:
EWX_POWEROFF: Shuts down the system and turns off the power. The system must support the power-off feature.

Vorzuziehen ist IMO, wie -=noname=- auch verwendete:
PSDK hat folgendes geschrieben:
EWX_SHUTDOWN: Shuts down the system to a point at which it is safe to turn off the power. All file buffers have been flushed to disk, and all running processes have stopped. If the system supports the power-off feature, the power is also turned off.