如何在win2k里制作一个定时器,定时重新起动?(50分)

  • 主题发起人 主题发起人 小小豆豆龙
  • 开始时间 开始时间

小小豆豆龙

Unregistered / Unconfirmed
GUEST, unregistred user!
希望能把详细代码给我,感谢!
 
其实非常简单
用Timer进行定时,然后用exitwindowsex函数重新启动系统。
 
procedure TForm1.ExitWindowsNT(uFlags: Integer); //Win2000、NT关机过程
var
hToken: THandle;
tkp, tkDumb: TTokenPrivileges;
DumbInt: DWORD;
begin
FillChar(tkp, sizeof(tkp), 0);
if not (OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)) then
Exit;
LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges(hToken, False, tkp, sizeof(tkDumb), tkDumb, DumbInt);
if GetLastError <> ERROR_SUCCESS then
Exit;
if not ExitWindowsEx(uFlags, 0) then
Exit;
end;

procedure TForm1.dxBarButton10Click(Sender: TObject); //重起计算机
var
VerTest: DWORD;
begin
VerTest := GetVersion;
if (VerTest < $80000000) then
ExitWindowsNT(EWX_REBOOT)
else
ExitWindowsEx(EWX_REBOOT, 0);
end;

使用一个定时器,属性Interval为默认,在Form的OnCreate中使定时器的Enable为True
然后检测时间,到了你规定的时间,执行重起过程。
 
接受答案了.
 

Similar threads

后退
顶部