![]() |
Shutdown nach bestimmter Zeit
Hallo!
Ich verwende folgenden Code, um den PC herunter zu fahren:
Delphi-Quellcode:
Wo/wie kann ich festlegen, dass der PC erst nach z.b. 1 Minute herunterfahren wird?
function ExWindows(const AFlag: Word): Boolean;
var vi : TOSVersionInfo; hToken : THandle; tp : TTokenPrivileges; h : DWord; begin flag:= EWX_Shutdown; result:= false; vi.dwOSVersionInfoSize:=SizeOf(vi); if GetVersionEx(vi) then begin if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then begin // Windows NT // Achtung bei Delphi 2 muß @hToken stehen ... if OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES,hToken) then begin 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(Aflag, 0); end; end else begin // Windows 95 Result := ExitWindowsEx(Aflag, 0); end; end; end; Vielen Dank Markus |
Re: Shutdown nach bestimmter Zeit
ruf doch einfach die shutdown.exe (param "-s" für herunterfahren) in C:\Windows\System32 auf und übergebe ihr den Parameter "-t 60"...
oder willst du unbedingt den Code da benutzen? |
Re: Shutdown nach bestimmter Zeit
Zitat:
Danke für die superschnelle Antwort. Dein Vorschlag klingt interessant. Kannst du mir erklären, wie ich vorgehen muss? Ich hab nicht gewusst, dass man überhaupt auf die shutdown.exe zugreifen kann... Wichtig ist, dass das ganze in Delphi passiert. |
Re: Shutdown nach bestimmter Zeit
Zitat:
|
Re: Shutdown nach bestimmter Zeit
Das Problem ist doch, dass man sich unter NT-Systemen erstmal die Rechte beschaffen muss.
Es wird doch nicht einfach reichen, die shutdown.exe über eine Delphi-Funktion aufzurufen oder? Kann man mit dem Code, den ich oben angegeben habe, keine Zeit vergeben? |
Re: Shutdown nach bestimmter Zeit
Hallo!!!
Das ganze ist wirklich ganz einfach zu programmieren und noch zu erweitern (z.B. zu einer bestimmten Uhrzeit herunterfahren...) wenn Du folgendes macht (und bei DEINEM Code oben bleibst): Hier mal ein Pseudocode (Unit DateUtils einbinden):
Delphi-Quellcode:
... zumindest so ähnlich, mal als Denkanstoß. Habe vor einigen Wochen ein selbiges Programm geschrieben, leider schon wieder gelöscht, sonst könnte ich Dir den Source posten.
ShutDownDateTime : TDateTime;
[...] ShutDownDateTime := AddMinutes(StrToInt(EditShutDownAfterXMinutes.Text), Now); [...] procedure Timer1OnTimer(Sender : TObject); Begin If Now >= ShutDownDateTime Then Begin; // Hier Windows herunterfahren oder was auch immer... End; End; [...] SCRaT |
Re: Shutdown nach bestimmter Zeit
Der Aufruf der shutdown.exe würde dann folgendermaßen funktionieren?:
Delphi-Quellcode:
uses ShellAPI;
ShellExecute(Handle, 'open', PChar(C:\Windows\System32\shutdown.exe -s -m \\Rechnername -t %STime% -c "Herunterfahren des PCs" ), nil, nil, sw_Show); |
Re: Shutdown nach bestimmter Zeit
Zitat:
Wenn jemand ein ähnliches Programm mit Code hat, dann würd ich mich darüber freuen :-D Oder soll ich doch die Idee mit der shutdown.exe machen? Markus |
Re: Shutdown nach bestimmter Zeit
Zitat:
|
Re: Shutdown nach bestimmter Zeit
Dann wärs schön, wenn mir jemand scrat1979's Vorschlag nochmal genauer erklären könnte.
Danke :roteyes: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz