我知道有EXITWINDOWSEX API函数,可是不知道怎样定义
怎样实现当按下Button1是关闭系统?

解决方案 »

  1.   

    可直接调用:
    procedure TForm1.Button1Click(Sender: TObject);
    Begin
      ExitWindowsEx(EWX_POWEROFF Or EWX_SHUTDOWN,0)
    End
      

  2.   

    ExitWindowsEx(EWX_POWEROFF Or EWX_SHUTDOWN,0)
      

  3.   

    使用API   ExitWindowsEx()
    (1)注销                       exitwindowsex(0,0)
    (2)重新启动以当前用户自动登陆 exitwindowsex(EWX_REBOOT,0);
    (2)关机                       exitwindowsex(EWX_SHUTDOWN,0);
    (2)重新启动后用其他用户登陆   exitwindowsex(EWX_LOGOFF,0);za
      

  4.   

    如果是2000,还要有权限,可以用程序调整权限
    procedure TForm1.AdjustToken();varhdlProcessHandle : Cardinal;hdlTokenHandle : Cardinal;tmpLuid : Int64;tkpPrivilegeCount : Int64;tkp : TOKEN_PRIVILEGES;tkpNewButIgnored : TOKEN_PRIVILEGES;lBufferNeeded : Cardinal;Privilege : array[0..0] of _LUID_AND_ATTRIBUTES;beginhdlProcessHandle := GetCurrentProcess;OpenProcessToken(hdlProcessHandle,(TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY),hdlTokenHandle);// Get the LUID for shutdown privilege.LookupPrivilegeValue('', 'SeShutdownPrivilege', tmpLuid);Privilege[0].Luid := tmpLuid;Privilege[0].Attributes := SE_PRIVILEGE_ENABLED;tkp.PrivilegeCount := 1; // One privilege to settkp.Privileges[0] := Privilege[0];// Enable the shutdown privilege in the access token of this// process.AdjustTokenPrivileges(hdlTokenHandle,False,tkp,Sizeof(tkpNewButIgnored),tkpNewButIgnored,lBufferNeeded);end;******************在Windows2000下关闭计算机function ShutDownSystem():BOOL;varhProcess,hAccessToken:THandle;LUID_AND_ATTRIBUTES:TLUIDAndAttributes;TOKEN_PRIVILEGES: TTokenPrivileges;BufferIsNull:DWORD;ConstSE_SHUTDOWN_NAME='SeShutdownPrivilege';beginhProcess:=GetCurrentProcess();OpenProcessToken(hprocess,TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY,hAccessToken);LookupPrivilegeValue(Nil,SE_SHUTDOWN_NAME,LUID_AND_ATTRIBUTES.Luid);LUID_AND_ATTRIBUTES.Attributes:=SE_PRIVILEGE_ENABLED;TOKEN_PRIVILEGES.PrivilegeCount:=1;TOKEN_PRIVILEGES.Privileges[0]:=LUID_AND_ATTRIBUTES;BufferIsNull:=0;AdjustTokenPrivileges(hAccessToken,False,TOKEN_PRIVILEGES,sizeof(TOKEN_PRIVILEGES),Nil,BufferIsNull);ExitWindowsEx(EWX_REBOOT, 0);ShutDownSystem:=True;end;