如何在win2000下彻底的关闭计算机,包括关闭ATX电源

yjl169 2002-01-24 09:50:14
如何在win2000下彻底的关闭计算机,包括关闭ATX电源。我在关闭计算机后,会出现“现在你可以安全关闭计算机了”,哪位高手可以指点,给我所有的分。
...全文
153 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjl169 2002-01-27
  • 打赏
  • 举报
回复
希望你可以把它写成在一个button的click下可以实现的程序,这样我就可以做试验了,真得很感谢你,我一成功,马上给全分,谢谢
yjl169 2002-01-27
  • 打赏
  • 举报
回复
你这个第三方控件是什么,我怎么才可以实现关机,你的程序我还是不知道怎么用它,
你可以写清楚点吗
yjl169 2002-01-27
  • 打赏
  • 举报
回复
谢谢rwdx(任我独行) ,我已经成功,虽然不是用你的程序,但还是谢谢你,我还是会给分的,给你50,请笑纳
hongyou 2002-01-27
  • 打赏
  • 举报
回复
这都有代码啊?!
PFPF
rwdx 2002-01-26
  • 打赏
  • 举报
回复
完整代码,过程参数'INFO'是判断OS类型的,我用了一个第三方控件,
PROCEDURE TA_PW.SHUTDOWN(INFO:STRING);
const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
hToken : THandle;
tkp : TTokenPrivileges;
tkpo : TTokenPrivileges;
zero : DWORD;
begin
if INFO = 'Windows NT' then
begin
zero := 0;
if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
begin
MessageBox( 0, 'Exit Error', 'OpenProcessToken() Failed', MB_OK );
Exit;
end;
if not LookupPrivilegeValue( nil, 'SeShutdownPrivilege' , tkp.Privileges[ 0 ].Luid ) then
begin
MessageBox( 0, 'Exit Error', 'LookupPrivilegeValue() Failed', MB_OK );
Exit;
end;
tkp.PrivilegeCount := 1;
tkp.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges( hToken, False, tkp, SizeOf( TTokenPrivileges ), tkpo, zero );
if Boolean( GetLastError() ) then
begin
MessageBox( 0, 'Exit Error', 'AdjustTokenPrivileges() Failed', MB_OK );
Exit;
end
else
ExitWindowsEx( EWX_SHUTDOWN or EWX_POWEROFF, 0 );
end
else
begin
ExitWindowsEx( EWX_SHUTDOWN or EWX_POWEROFF, 0 );
ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN, 0 );
end;
end;
rwdx 2002-01-26
  • 打赏
  • 举报
回复
sorry! 忘了一段代码了,不好意思,
const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
hToken : THandle;
tkp : TTokenPrivileges;
tkpo : TTokenPrivileges;
zero : DWORD;
然后接前面的

这个只对W2K才起作用,WINDOWS就不用这么麻烦了,直接用
ExitWindowsEx( EWX_SHUTDOWN or EWX_POWEROFF, 0 );
ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN, 0 );
yjl169 2002-01-26
  • 打赏
  • 举报
回复
任我独行兄,你的代码好象不好用呀, ExitWindowsEx( EWX_SHUTDOWN or EWX_POWEROFF, 0 );这句话,我把它单独弄出来,放在button下click事件,不好用呀
,或者是我不会用,麻烦你把它写成button下的click事件下可用的,好吗?谢谢,好用后马上给全分
rwdx 2002-01-25
  • 打赏
  • 举报
回复
我有源代码,很简单
begin
zero := 0;
if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
begin
MessageBox( 0, 'Exit Error', 'OpenProcessToken() Failed', MB_OK );
Exit;
end;
if not LookupPrivilegeValue( nil, 'SeShutdownPrivilege' , tkp.Privileges[ 0 ].Luid ) then
begin
MessageBox( 0, 'Exit Error', 'LookupPrivilegeValue() Failed', MB_OK );
Exit;
end;
tkp.PrivilegeCount := 1;
tkp.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges( hToken, False, tkp, SizeOf( TTokenPrivileges ), tkpo, zero );
if Boolean( GetLastError() ) then
begin
MessageBox( 0, 'Exit Error', 'AdjustTokenPrivileges() Failed', MB_OK );
Exit;
end
else
ExitWindowsEx( EWX_SHUTDOWN or EWX_POWEROFF, 0 );
end
Mylwf 2002-01-24
  • 打赏
  • 举报
回复
按POWER键!!这都不会
RockSjc 2002-01-24
  • 打赏
  • 举报
回复
CMOS中设置高级电源管理。如果你的PC 主板支持的话!
Rain_B 2002-01-24
  • 打赏
  • 举报
回复
我也遇到过类似的问题,我在WIN2000里用API关机,结果出现"现在你可以安全关闭计算机了"
而网络蚂蚁却可以在执行完下载任务后正常的关机.

继续关注
hongyou 2002-01-24
  • 打赏
  • 举报
回复
启动高级电源管理

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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