Mit hilfe dieses Quelltextes sollte jeder in der Lage sein, einen Rechner neu zu starten, herrunter zu fahren oder aber den Benutzer abzumelden, bei Fragen einfach raus damit. Ob man dies nun Zeitgesteuert macht, z.B. weil der Rechner noch 3 oder 4 Stunden vor sich her laufen soll, man aber weg muss..... oder ob man sein Vic ein bisschen ?rgert indem jeden Tag um 13.00 Uhr der Rechner neu startet.... das belibt nat?rlich jeden selbst ?berlassen, Einsatzm?glichkeiten finden sich sicher viele....
Code
- unit main;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, Buttons, ExtCtrls;
- type
- TForm1 = class(TForm)
- BitBtn_beenden: TBitBtn;
- txt_shutdownzeit: TEdit;
- BitBtn_go: TBitBtn;
- lbl_shutdownzeit: TLabel;
- Label1: TLabel;
- Timer1: TTimer;
- Label2: TLabel;
- lbl_verbleibendezeit: TLabel;
- rg_aktion: TRadioGroup;
- procedure BitBtn_beendenClick(Sender: TObject);
- procedure BitBtn_goClick(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure Timer1Timer(Sender: TObject);
- private
- { Private-Deklarationen }
- public
- { Public-Deklarationen }
- end;
- var
- Form1: TForm1;
- implementation
- var
- ShutDownZeit : TTime;
- //..............................................................................
- {$R *.dfm}
- //..............................................................................
- function ExWindows(const AFlag: Word): Boolean;
- var
- vi : TOSVersionInfo;
- hToken : THandle;
- tp : TTokenPrivileges;
- h : DWord;
- begin
- 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;
- //..............................................................................
- procedure TForm1.BitBtn_beendenClick(Sender: TObject);
- begin
- close;
- end;
- //..............................................................................
- procedure TForm1.BitBtn_goClick(Sender: TObject);
- begin
- ShutDownZeit := StrToTime(txt_shutdownzeit.text);
- lbl_ShutDownZeit.Caption := TimeToStr(ShutDownZeit);
- end;
- //..............................................................................
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- bitbtn_go.Click;
- end;
- //..............................................................................
- procedure TForm1.Timer1Timer(Sender: TObject);
- begin
- lbl_verbleibendezeit.Caption := TimeToStr(ShutDownZeit - Time);
- if Time >= ShutDownZeit then
- case rg_aktion.ItemIndex of
- 0: ExWindows(EWX_Shutdown);
- 1: ExWindows(EWX_Reboot);
- 2: ExWindows(EWX_LogOff);
- end;
- end;
- //..............................................................................
- end.