windows的关机函数是什么?怎么用?(50分)

  • 主题发起人 主题发起人 newhzh
  • 开始时间 开始时间
N

newhzh

Unregistered / Unconfirmed
GUEST, unregistred user!
windows的关机函数是什么?怎么用?谢谢
 
ExitWindows
 
能具体点吗?谢谢
 
const
EWX_FORCE=4; //关闭所有程序并以其他用户身份登录
EWX_LOGOFF=0; //重新启动计算机并切换到MS-DOS方式
EWX_REBOOT=2; //重新启动计算机
EWX_SHUTDOWN=1;//关闭计算机
运行时给How赋值,让他等于EWX_SHUTDOWN或其他,调用以下语句
ExitWindowsEx(How,0);

喂!兄弟!记得给我分数啊!
 
呵呵,看看sdk帮助吧,说的狠详细的,不过楼上也挺详细了,:)
 
ExitWindowsEx()函数
参数:
EWX_LOGOFF:注销
EWX_REBOOT:重新引导系统;
EWX_SHUTDOWN:关闭系统!
保留字:0
例子:
unit Unit1;
....(自动生成)
rpocedure TForm1.FormClose(Sender:TObject;var Action:TCloseAction)
begin
ExitWindowsEx(EWX_SHUTDOWN,0);
end;
end.
 
在2k和nt下要需要取得关机权限。下面一个可以,我试过了!
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);

private
{ Private declarations }
procedure AdjustToken;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.AdjustToken();
var
hdlProcessHandle : Cardinal;
hdlTokenHandle : Cardinal;
tmpLuid : Int64;
tkpPrivilegeCount : Int64;
tkp : TOKEN_PRIVILEGES;
tkpNewButIgnored : TOKEN_PRIVILEGES;
lBufferNeeded : Cardinal;
Privilege : array[0..0] of _LUID_AND_ATTRIBUTES;
begin
hdlProcessHandle := 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 set
tkp.Privileges[0] := Privilege[0];
// Enable the shutdown privilege in the access token of this
// process.
AdjustTokenPrivileges(hdlTokenHandle,
False,
tkp,
Sizeof(tkpNewButIgnored),
tkpNewButIgnored,
lBufferNeeded);

end;
procedure TForm1.Button1Click(Sender: TObject);
begin
AdjustToken;
ExitWindowsEx((EWX_SHUTDOWN Or EWX_FORCE Or EWX_REBOOT), $FFFF);
end;
end.
随便给点分吧,我穷![:D]
 
多人接受答案了。
 
后退
顶部