自己设置的开机启动 关机提示程序

来源:互联网 发布:淘宝的积分 编辑:程序博客网 时间:2024/05/09 21:50

 unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,Registry;

type
  TForm3 = class(TForm)
    Label1: TLabel;
  
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private

  procedure QueryEndSession(var Msg:TMessage);

  Message WM_QueryEndSession;


    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;
  i:Integer;


implementation

{$R *.dfm}

 

 


procedure TForm3.QueryEndSession(var Msg: TMessage);

var j:Integer;
begin


       j:=1;
       if j<>i then
      
          begin
          Form3.Visible:=true;

          Memo1.ScrollBars:=ssBoth;
          Memo1.Lines.LoadFromFile('d:/e.txt');

          Msg.Result:=0;

          end
          else

          Msg.Result:=1;

 

 

 

end;

 

 

 

 

 

 

procedure TForm3.Button1Click(Sender: TObject);
begin


     Form3.Hide;

 

 

end;

 

 


procedure TForm3.Button2Click(Sender: TObject);


begin

    i:=1;


  


   WinExec('shutdown -s -t 0', sw_Show);

 


end;

procedure TForm3.FormCreate(Sender: TObject);

var

reg:TRegistry;

 


 {
 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);


    }


      i:=0;
      Memo1.Lines.LoadFromFile('d:/d.txt');


      reg:=tregistry.Create;
      reg.RootKey:=HKEY_LOCAL_MACHINE;
      reg.OpenKey('SOFTWARE/Microsoft/Windows/CurrentVersion/Run',true);
      reg.WriteString('信息','C:/Documents and Settings/Administrator/My Documents/RAD Studio/Projects/yitutong.exe');

 

      reg.CloseKey;
      reg.Free;

 

 


end;

end.

 

 

注意 此程序用一个全局变量i的值, 来判断是否需要关机

 

 

 如果i的值与j不同

 则不关机

 如果相同

 则关机

 

所以我们可以在另一个事件中设置全局变量i的取值,然后将它与其它事件中的局部变量做比较,来控制选择分支

 

 

=====================

 

 

^^!!!  可惜源程序找不到了 DELPHI 也就学习了那几天 无法重新编译了  看看以后还有米有心情再调试吧