PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ausschalttimer!



Painkiller
30.06.2004, 19:09
Hallo ähm kann man mit Delphie einen Timer programmieren der nach ablauf der Zeit den Pc ausschalten lässt?
Mfg Hänsel

TommySZB
30.06.2004, 20:04
Das ganze sollte mit der Windows API Funktion "ExitWindows" funktionieren, da ich aber von Delphi wenig Ahnung habe kann ich dir die genaue Implementierung nicht sagen, in VB wüsste ichs *gg*.
Suche halt mal nach der o.g. Funktion.

Gruss

skyphab
30.06.2004, 21:56
Hi.

Habe das hier über Google gefunden. Kannst ja mal testen und berichten :)

Uses WINPROCS

procedure TForm1.ExitWindows;
begin
{$IFDEF WIN32}
ExitWindowsEx(EWX_SHUTDOWN {EWX_LOGOFF}, 0);
{$ELSE}
WinExec('Rundll.exe User,ExitWindows',SW_HIDE);
{$ENDIF}
end;

Jetzt musst du einen Timer auf die Form klatschen und dann auf den Trigger des Timers die Funktion aufrufen. So sollte es dann gehen.

Exr
01.07.2004, 00:25
Hi.

So einfach geht das leider nur unter Win'98 Systemen. Alles auf dem NT-Kern erwartet dass das Programm das Privileg hat, das System herunterfahren zu dürfen.

Dazu ist glaube ich folgender Code-Abschnitt zuständig:



HANDLE token;
TOKEN_PRIVILEGES tokenpriv;

OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &token);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tokenpriv.Privileges[0].Luid);
tokenpriv.PrivilegeCount=1;
tokenpriv.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(token, false, &tokenpriv, 0, (PTOKEN_PRIVILEGES)NULL, 0);


Wenn du ein prog suchst, dass deinen PC als Timer runterfährt, das gibts hier (www.retsfets.de/Downloads/shutdown.zip).


Sorry, hab den delphie übersehen. Naja, so gehts jedenfalls in C++. Zumindest der Privilieg-Teil.


so long,
exr

Painkiller
01.07.2004, 15:07
@ Exr
danke ich hab es mal ausprobiert funzt hervoragend.
Danke
Mfg Painkiller