网站建议:179001057@qq.com

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

技术2022-05-11  2

 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 也就学习了那几天 无法重新编译了  看看以后还有米有心情再调试吧

 

 


最新回复(0)