控制WINDOWS的开关:如关闭WINDOWS,重新启动WINDOWS等, ExitWindowsEx(UINT uFlags,DWORD dwReserved);是实现这一功能的API函数
首先定义常数
const
EWX_FORCE=4; //关闭所有程序并以其他用户身份登录
EWX_LOGOFF=0; //重新启动计算机并切换到MS-DOS方式
EWX_REBOOT=2; //重新启动计算机
EWX_SHUTDOWN=1;//关闭计算机
运行时给How赋值,让他等于EWX_SHUTDOWN或其他,调用以下语句
ExitWindowsEx(How,0);
///////////////////////////////////////////
Function ShutDownWindows(Flags: Byte) : Boolean;
begin
Result := ExitWindowsEx(Flage, 0)
// 如果成功返回 True.
end;
Flags可用参数:
EWX_LOGOFF:
(=0)
安全地关闭所有进程,并关闭用户登录。
EWX_SHUTDOWN:
(=1)
关闭系统。所有缓冲区的内容都能被安全的存盘,所有进程都将被停止。
对于Windows NT: 必须有 SE_SHUTDOWN_NAME 的安全特权方可进行此项操作。
对于Windows 95: 不必有任何特权。
EWX_REBOOT:
(=2)
关闭并重新启动系统。
对于Windows NT: 必须有 SE_SHUTDOWN_NAME 的安全特权方可进行此项操作。
对于Windows 95: 不必有任何特权。
EWX_FORCE:
(=4)
强制切断连接,关闭所有应用程序。当使用这个参数时,Windows 将不向正在运行的应用程序发送 WM_QUERYENDSESSION 和 WM_ENDSESSION 消息,有可能造成数据丢失。所以推荐只在紧急时使用这个参数。
EWX_POWEROFF:
(=8)
关闭系统并切断电源,需要ATX电源支持。
/////////////////////////////////////
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.
分享到:
相关推荐
在本文中,我们将深入探讨如何使用Delphi编程语言来实现一个Windows文件夹管理树。Delphi,基于Object Pascal,是一个强大的RAD(快速应用开发)工具,特别适合于创建桌面应用程序,包括那些涉及到文件系统交互的...
delphi7代码编辑运行环境下,Delphi Messagebox自动关闭功能演示代码,以及可运行程序,无须任何.net编译平台,windows下原生程序。 使用方法:打开对话框前调用 SetDlgAutoClose { 参数1: 设定多长时间后关闭 }...
总的来说,Delphi提供了一个强大的框架,使得开发者可以方便地与Windows API交互,实现如关闭进程这样的底层操作。通过理解这些API函数的工作原理和Delphi的封装方式,我们可以编写出高效且可靠的程序。
在 Delphi 开发环境中,你可以使用 Windows API 函数来实现更换桌面壁纸以及控制屏保的启动和关闭。这个实例提供了一种方法,让 Delphi 开发者能够更好地理解和操作 Windows 系统的基本功能。以下是对这个 Delphi 源...
综上所述,使用Delphi实现强制关闭进程的功能,主要涉及到Windows API的调用,包括获取进程ID、打开进程句柄和终止进程等步骤。在实际编程时,需要充分理解这些API的使用方法,并考虑相应的错误处理和安全性问题。
在Delphi编程环境中,我们可以使用内置的Windows API函数来实现计算机的关闭操作。API(Application Programming Interface)是操作系统提供给开发者的一系列接口,允许程序与操作系统进行交互。在这个场景下,我们...
本资源是一个使用Delphi编程语言实现的简单应用程序,它提供了这三个基本的系统控制功能。Delphi是一款强大的Windows应用开发工具,基于Object Pascal语言,能够方便地创建桌面应用程序。 首先,我们来看"Delphi...
Delphi中的许多系统级功能是通过调用Windows API(应用程序接口)来实现的。在这个实例中,我们主要会用到两个API函数:`CreateProcess` 和 `TerminateProcess`。 2. **CreateProcess函数**: 这个函数用于创建一...
5. **系统API调用**:利用Windows API函数来实现进程管理和关闭事件的拦截。 由于我们无法查看实际的源代码,上述分析是基于对Delphi编程和系统编程的一般理解。如果你希望深入了解这个程序的工作原理,你需要下载...
SFP通过Windows资源保护(Windows Resource Protection,WRP)实现,监控并保护关键系统组件,如系统文件、注册表项等。 **关闭SFP的危险性** 关闭系统文件保护虽然可以让我们在某些情况下更自由地操作系统文件,但...
如果是一个可执行文件,那么用户可以直接运行来实现关闭屏幕的功能,无需编译源代码。 总的来说,这个程序展示了如何利用Delphi和Windows API来实现一个实用的小工具,即快速关闭屏幕,以满足节能需求。对于学习...
总结来说,使用Delphi实现的这个进程监控和自动重启系统,结合非控件实现的托盘程序,提供了一种高效且隐蔽的后台服务方式,对于系统管理和维护具有很高的实用价值。通过理解上述技术细节,你可以根据自己的需求定制...
实现了在Windows XP/7 操作系统的桌面右下角弹出类似MSN的popup的提示框的功能,压缩包文件是完整的delphi2010工程代码。可以在delphi2010中直接打开编译。弹窗支持自动定时关闭、自动堆叠显示,自定义背景图片等...
在Delphi中实现这些HOOK,主要依赖于Windows API函数SetWindowsHookEx(),并通过消息循环来处理被拦截的事件。开发者需要对Windows消息机制有深入理解,并能够熟练地使用WinAPI函数。通过学习和实践这些源码实例,...
在 Delphi 编程环境中,实现计算机的注销、重启和关机功能,主要涉及到 Windows API(应用程序接口)的调用。API 是操作系统提供给开发者的一种间接访问系统功能的方式。以下将详细阐述如何在 Delphi 中实现这些功能...
总结起来,在DELPHI中实现“关闭当前进程”的功能,主要是通过调用Windows API函数`GetCurrentProcess`和`TerminateProcess`,并结合异常处理和资源管理。在实际开发中,理解这些API的使用方法和注意事项对于编写...
Delphi提供了`TProcess`类,可以用来管理进程,但关闭外部程序通常需要借助Windows API函数,如`OpenProcess`和`TerminateProcess`。 以下是实现这一功能的关键步骤: 1. **获取进程信息**:要关闭某个外部程序,...
在Delphi开发环境中,有时我们需要实现类似于Windows文件资源管理器中的文件复制或移动功能。这通常涉及到使用Windows API来模拟用户操作,比如通过剪贴板(Clipboard)来传递文件列表。本文将详细介绍如何在Delphi...
在本话题中,我们将探讨如何利用Delphi实现定时开启和关闭应用程序,以及如何结合系统托盘功能来实现这些功能。这在日常任务自动化、后台服务监控等方面具有广泛的应用。 首先,让我们深入了解Delphi中的定时任务。...
本文将详细讲解如何使用Delphi实现这些功能,并通过提供的源码进行解析。 首先,我们要知道在Windows API中,有专门的函数可以执行这些任务。Delphi作为Windows平台上的开发工具,可以通过调用这些API来实现所需的...