WINXP/2000/2003系统定时关机小程序

针对办公室服务器夜间使用需求,开发了一款基于DELPHI7的定时关机软件,适用于WINXP、WIN2000及WIN2003系统。该软件通过设置特定时间自动关闭服务器,避免了夜间无人值守的问题。

     因为服务器是放在办公室的某一个角落里,所以晚上办公室没人值班时,其它部门、车间还要用到服务器,所以不能早早的关服务器,晚上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.youkuaiyun.com/source/1122097

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值