本实例介绍在Windows 2000环境下如何注销、重新启动和关闭计算机。
![]()
向窗体上添加一个TButton组件和3个TRadioButton组件,其中TRadioButton组件用于选择程序的功能是注销、重新启动还是关闭计算机。设计完成的主界面如图4-9所示。

图4-9 主界面
![]()
在Windows 2000操作系统中,如果在程序中直接调用ExitWindowsEx函数来完成重新启动计算机等系统级操作时,需要提升应用程序的操作权限,在本实例中,通过窗体的初始化过程来完成这一步骤:
procedure TForm1.FormCreate(Sender: TObject);
var
hToken : THandle;
Tkp : TTokenPrivileges;
Zero:DWORD;
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,SizeOf(TTokenPrivileges),nil,Zero);
end;
执行以上代码,应用程序就可以获得注销、重新启动或关闭计算机的权限。
如果用户选择了程序需要完成的功能,单击“确定”按钮就可以完成用户指定的功能,响应代码如下:
procedure TForm1.btnOKClick(Sender: TObject);
begin
if self.RadioButton1.Checked then
begin
ExitWindowsEx(EWX_LOGOFF,0);
end;
if self.RadioButton2.Checked then
begin
ExitWindowsEx(EWX_REBOOT,0);
end;
if self.RadioButton3.Checked then
begin
ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF,0);
end;
end;
程序通过判断3个TRadioButton组件的选中状态来设置ExitWindowsEx函数的第1个参数,如果该参数的第1个参数值为EWX_LOGOFF,那么就会完成注销的操作;如果为EWX_REBOOT,那么就会完成重新启动的操作;如果为EWX_SHUTDOWN or EWX_POWEROFF,那么就会关闭计算机。
| Visual C++编程窃取QQ密码 | 12-08 | |
| 编程实现重起网卡等设备 | 12-07 | |
| 一个邮件群发的Delphi代码! | 12-06 | |
| Delphi下Internet的编程技巧 | 11-20 | |
| Delphi黑客编程-如何映射虚拟盘 | 11-15 | |
| 用DETOURS库获取NT管理员权限 | 11-08 | |
| 一篇关于vb代码质量提高的文章 | 10-30 | |
| 解析Asp.net木马文件操作 | 10-04 | |
| 盗QQ源码 | 10-01 | |
| 如何映射肉鸡磁盘(Delphi黑客编程 | 09-24 | |
| 打造无DLL版穿墙Downloader(Delp | 09-22 | |
| 调用指定的Windows程序(Delphi编 | 09-19 | |