WINXP/2000/2003系统定时关机小程序
2009-03-20 20:37
363 查看
因为服务器是放在办公室的某一个角落里,所以晚上办公室没人值班时,其它部门、车间还要用到服务器,所以不能早早的关服务器,晚上22:30后才能关机。设置了一下2003系统自带的关机程序,不方便,所以自己开发了定时关机小软件,开发平台是DELPHI7,此小软件在WINXP、WIN2000、WIN2003下测试通过。现把源代码公布如下:供各位初学者参考,如有不足之处,望指正。
一、程序代码:
unit Ushutdown;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons;
type
TShutdownFrm = class(TForm)
Timer1: TTimer;
Panel1: TPanel;
BitBtn1: TBitBtn;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Timer1Timer(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
tm: String;
{ Public declarations }
end;
var
ShutdownFrm: TShutdownFrm;
implementation
{$R *.dfm}
function ShutDownSystem(uFlags: Cardinal):BOOL;
var
hProcess,hAccessToken:THandle;
LUID_AND_ATTRIBUTES:TLUIDAndAttributes;
TOKEN_PRIVILEGES: TTokenPrivileges;
BufferIsNull:DWORD;
Const
SE_SHUTDOWN_NAME='SeShutdownPrivilege';
begin
hProcess:=GetCurrentProcess();
OpenProcessToken(hprocess,TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY,hAccessToken);
LookupPrivilegeValue(Nil,SE_SHUTDOWN_NAME,LUID_AND_ATTRIBUTES.Luid);
LUID_AND_ATTRIBUTES.Attributes:=SE_PRIVILEGE_ENABLED;
TOKEN_PRIVILEGES.PrivilegeCount:=1;
TOKEN_PRIVILEGES.Privileges[0]:=LUID_AND_ATTRIBUTES;
BufferIsNull:=0;
AdjustTokenPrivileges(hAccessToken,False,TOKEN_PRIVILEGES,sizeof(TOKEN_PRIVILEGES),Nil,BufferIsNull);
ExitWindowsEX(EWX_SHUTDOWN,0);//关机
{ ExitWindowsEx(EWX_LOGOFF,0);//选注销
ExitWindowsEx(EWX_REBOOT,0); //重启 }
ShutDownSystem:=True;
end;
procedure TShutdownFrm.Timer1Timer(Sender: TObject);
begin
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,0,NIL,0);//禁止屏保执行
if timetostr(now)=tm+':00' then
ShutDownSystem(EWX_POWEROFF+EWX_FORCE);
end;
procedure TShutdownFrm.BitBtn1Click(Sender: TObject);
begin
if Edit1.Text<>'' then
begin
tm := trim(Edit1.Text);
Timer1.Enabled := True;
Timer1.Interval := 500;// interval是设置时间间隔:设置Interval属性,单位是毫秒mm,1000即为1秒。
end
else
begin
showmessage('关机时间不能为空!');
end;
end;
end.
二、绿色软件,不用安装,软件下载地址:
http://download.csdn.net/source/1122097
一、程序代码:
unit Ushutdown;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons;
type
TShutdownFrm = class(TForm)
Timer1: TTimer;
Panel1: TPanel;
BitBtn1: TBitBtn;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Timer1Timer(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
tm: String;
{ Public declarations }
end;
var
ShutdownFrm: TShutdownFrm;
implementation
{$R *.dfm}
function ShutDownSystem(uFlags: Cardinal):BOOL;
var
hProcess,hAccessToken:THandle;
LUID_AND_ATTRIBUTES:TLUIDAndAttributes;
TOKEN_PRIVILEGES: TTokenPrivileges;
BufferIsNull:DWORD;
Const
SE_SHUTDOWN_NAME='SeShutdownPrivilege';
begin
hProcess:=GetCurrentProcess();
OpenProcessToken(hprocess,TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY,hAccessToken);
LookupPrivilegeValue(Nil,SE_SHUTDOWN_NAME,LUID_AND_ATTRIBUTES.Luid);
LUID_AND_ATTRIBUTES.Attributes:=SE_PRIVILEGE_ENABLED;
TOKEN_PRIVILEGES.PrivilegeCount:=1;
TOKEN_PRIVILEGES.Privileges[0]:=LUID_AND_ATTRIBUTES;
BufferIsNull:=0;
AdjustTokenPrivileges(hAccessToken,False,TOKEN_PRIVILEGES,sizeof(TOKEN_PRIVILEGES),Nil,BufferIsNull);
ExitWindowsEX(EWX_SHUTDOWN,0);//关机
{ ExitWindowsEx(EWX_LOGOFF,0);//选注销
ExitWindowsEx(EWX_REBOOT,0); //重启 }
ShutDownSystem:=True;
end;
procedure TShutdownFrm.Timer1Timer(Sender: TObject);
begin
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,0,NIL,0);//禁止屏保执行
if timetostr(now)=tm+':00' then
ShutDownSystem(EWX_POWEROFF+EWX_FORCE);
end;
procedure TShutdownFrm.BitBtn1Click(Sender: TObject);
begin
if Edit1.Text<>'' then
begin
tm := trim(Edit1.Text);
Timer1.Enabled := True;
Timer1.Interval := 500;// interval是设置时间间隔:设置Interval属性,单位是毫秒mm,1000即为1秒。
end
else
begin
showmessage('关机时间不能为空!');
end;
end;
end.
二、绿色软件,不用安装,软件下载地址:
http://download.csdn.net/source/1122097
相关文章推荐
- Windows 2000、Windows XP 和 Windows 2003 Server定时开机与关机设置
- Windows: 在系统启动时运行程序、定时计划任务、定时关机
- 2003系统部署 asp.net mvc + extjs 程序
- 轻松卸载WinXP/2000/2003
- 转载 C#写的程序,在关机时不能退出,导致系统不能关机。
- 各式各样的自启动(系统启动或注销及开机\关机时执行一定程序)
- 安装SQL SERVER 2000时提示"系统有挂起的程序"?的处理方法
- Windows 2000下如何在自己的程序中实现关机!
- Windows 2000下如何在自己的程序中实现关机!
- 苹果系统定时关机(MacOS 定时关机)
- 两种方法,让server 2003系统关机无需理由
- bat定时自动关机,bat自动结束任务关闭程序,dos自动结束程序后关机
- 域用户登陆时总要先按Ctrl+Alt+Delete的问题也适用2000,2003系统
- ASP程序在2000下一切正常,但转到2003服务器上,乱码
- 网站改版总结:(一)Windows 2003 server下iis6+PHP4+MS SQL 2000系统配置说明
- 2003系统下不能运行asp程序的彻底解决方法
- 修改注册表加快Vista/2000/XP/2003关机速度
- 怎样配置和管理WinXP/2003系统服务
- 用Win32写的定时关机程序
- 用Win32写的定时关机程序