API:
ExitWindowsEx自己看DELPHI的帮助吧

解决方案 »

  1.   

    要实现对Windows的开关的控制,可以利用Windows API函数 ExitWindowsEx()来实现这一功能。此函数的声明如下:
      Bool ExitWindowsEx(
             UINT uFlags,
             DWORD dwReserved
               );
    此函数的第一个参数控制计算机的开关,说明如下:
       EWX_FORCE=4;//关闭所有程序并以其他用户身份登录
       EWX_LOGOFF=0;//重新启动计算机并切换到MS_DOD方式
       EWX_REBOOT=2;//这就是你想要的。
       EWX_SHUTDOWN=1;//关闭计算机
    例子:
     procedure ...(Sender: TObject);//按钮的点击事件
     begin
       ExitWindowsEx(EWX_REBOOT,0);
     end;
    这样就可以重新启动计算机了。
      

  2.   

    呵呵,看我的相关文档:var
     VerInfo:TOSVersionInfo;
     hToken:THANDLE;
     tkp:TOKEN_PRIVILEGES;
     Nothing:Cardinal;
    begin
    VerInfo.dwOSVersionInfoSize:=SizeOf(VerInfo);
    GetVersionEx(VerInfo);
    if VerInfo.dwPlatformId=VER_PLATFORM_WIN32_NT then
     Begin
       OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken);
       LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.Privileges[0].Luid);
       tkp.PrivilegeCount:= 1;
       tkp.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
       AdjustTokenPrivileges(hToken, FALSE, tkp, 0,nil, Nothing);
      End;
      ExitWindowsEx(//你的惯技玄想);
     end;
      

  3.   

    我做了个表单,上面加一个按纽,在点击事件中用:  ExitWindowsEx(EWX_REBOOT,0);
    怎么不行呢?
      

  4.   

    查看一下帮助,这样试试ExitWindowsEx(EWX_REBOOT and EWX_FORCE,0);
      

  5.   

    帮助上这么说:
    Windows NT: 
          To shut down or restart the system, the calling process must use the AdjustTokenPrivileges function to enable the SE_SHUTDOWN_NAME privilege.
    这是什么意思?该怎么做?
      

  6.   

    你再使用AdjustTokenPrivileges不就行了