📄 unit1.pas.~2~
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Timer1: TTimer;
Button3: TButton;
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
fs:boolean;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
fs:=true;
if strtoint(edit1.Text)<=32767
then timer1.Interval:=inttostr(edit1.Text)
else application.MessageBox(pchar('错误!'),pchar('错误!秒数不可超过32767!'));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
fs:=false;
if strtoint(edit1.Text)<=32767
then timer1.Interval:=inttostr(edit1.Text)
else application.MessageBox(pchar('错误!'),pchar('错误!秒数不可超过32767!'));
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
timer1.Enabled:=false;
end;
procedure TForm1.Edit1Change(Sender: TObject);
var
i:integer;
begin
for I := 1 to length(edit1.Text) do
begin
if Not (fication .Text[i] in ['0'..'9'])
then application.MessageBox(pchar('错误!'),pchar('错误!只可输入数字!'))
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
st : SYSTEMTIME;
hToken : THANDLE;
tkp : TOKEN_PRIVILEGES;
rr : Dword;
begin
if fs
then begin
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken);
LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.Privileges[0].Luid);
// 设定权限为1
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
// 得到权限
AdjustTokenPrivileges(hToken, FALSE, tkp, 0,nil,rr);
// 关闭计算机
ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0)
end
else begin
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken);
LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.Privileges[0].Luid);
// 设定权限为1
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
// 得到关机权限
AdjustTokenPrivileges(hToken, FALSE, tkp, 0,nil,rr);
// 重起计算机
ExitWindowsEx(EWX_REBOOT OR EWX_POWEROFF, 0)
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -