在Windows 2000下如何实现关机?

djk2003 2003-11-20 04:48:53
我用了EixtWindows(EWX_SHUTDOWN,32)实现关机,发现
98下是可以的,但2000下不行,函数的问题,有谁知道怎么实现?
...全文
29 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccf99 2003-11-20
  • 打赏
  • 举报
回复
学习
4043335 2003-11-20
  • 打赏
  • 举报
回复
2000下关机不是简单的一个过程就能实现的
给你现面的代码,这个是可以的

procedure offcomputer;
var
hToken:THandle;
tkp : TOKEN_PRIVILEGES;
ReturnLength : DWord;
begin
if (not OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_ALL_ACCESS or TOKEN_QUERY, hToken))then
begin
application.Terminate;
end;
LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes :=SE_PRIVILEGE_ENABLED;
ReturnLength :=0;
AdjustTokenPrivileges(hToken, FALSE, tkp, 0,nil,ReturnLength);
if (GetLastError() <> ERROR_SUCCESS) then
begin
application.Terminate;
end;

if (not ExitWindowsEx(EWX_POWEROFF, 0)) then
begin
application.Terminate;
end;
end;
可以直接调用这个过程

至于重启怎么实现就不用再说了把里面的一个参数改一下就Ok了
ccf99 2003-11-20
  • 打赏
  • 举报
回复
在 Win32中,Exitwindows()只是注销当前的用户,然后让其他的用户登陆
ccf99 2003-11-20
  • 打赏
  • 举报
回复
用ExitWindowsEx(EWX_SHUTDOWN,0)可以的

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧