您的位置:首页 > 移动开发 > 微信开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: