📄 skrypt.pas
字号:
unit skrypt;
interface
uses classes,windows;
const maxtermin=100;
const R_comment='comm';
R_enabled='enabled';
R_howmany='ilerazy';
R_random='random';
R_coile='coile';
R_yr1='yr1';
R_yr2='yr2';
R_m1='m1';
R_m2='m2';
R_d1='d1';
R_d2='d2';
R_h1='h1';
R_h2='h2';
R_mi1='mi1';
R_mi2='mi2';
R_dw1='dw1';
R_dw2='dw2';
{-----}
R_script='scr';
R_line='l';
type Tscript=record
name:string;
comm:string;
linie:TStringList;
end;
Pscript=^Tscript;
type TTermin=record
name:string;
comm:string;
yr1,yr2,m1,m2,d1,d2:integer;
h1,h2,mi1,mi2,dw1,dw2:integer;
yr0,m0,d0,h0,mi0,dw0:boolean;
skrypt:TstringList;
ilerazy:integer;
coile:integer;
rand:integer;
enabled:boolean;
end;
PTermin=^Ttermin;
var termin:array[1..maxtermin] of PTermin;
terminy:integer;
boolvalue:boolean;
exitproc:boolean;
winvalue:Hwnd;
procedure script_count;
procedure LoadTerminy;
function SCR_commands(comm,par1,par2:string):boolean;
procedure RunScript(name:string);
implementation
uses registry,stale,sysutils,main,toolz,windoz,siec,figle;
var count:longint;
mesg_title:string;
mesg_icons,mesg_buttons:integer;
// winvalue:hwnd;
defname:string;
onlyVisible:boolean;
fullname:boolean;
WindowToFind:string;
WindowFound:hwnd;
function FindChildClass(okno:hwnd;par:lparam):bool;stdcall;export;
var ClassName:array[0..128] of char;
begin
result:=true;
if onlyvisible and (not iswindowvisible(okno)) then exit;
GetClassName(okno,ClassName,128);
if (fullname and (ClassName=WindowToFind))
or ((not fullname) and (pos(WindowToFind,ClassName)<>0)) then
begin
WindowFound:=okno;
result:=false;
end;
end;
function SearchforChildClass(rodzic:hwnd;klasa:string):hwnd;
begin
WindowToFind:=klasa;
WindowFound:=0;
EnumChildWindows(rodzic,@FindChildClass,0);
Result:=WindowFound;
end;
function FindChildText(okno:hwnd;par:lparam):bool;stdcall;export;
var Title:array[0..128] of char;
begin
result:=true;
if onlyvisible and (not iswindowvisible(okno)) then exit;
GetWindowText(okno,Title,128);
if (fullname and (Title=WindowToFind))
or ((not fullname) and (pos(Windowtofind,Title)<>0)) then
begin
WindowFound:=okno;
result:=false;
end;
end;
function SearchforChildText(rodzic:hwnd;title:string):hwnd;
begin
WindowTofind:=title;
WindowFound:=0;
EnumChildWindows(rodzic,@FindChildText,0);
Result:=WindowFound;
end;
function Przerobka(var liczba1:integer;var liczba2:integer):boolean;
begin
result:=(liczba1=0)and(liczba2=0);
if not result then
begin
if liczba1=0 then liczba1:=liczba2;
if liczba2=0 then liczba2:=liczba1;
end;
end;
function LoadTermin(name:string;sc:PTermin):boolean;
var Rejestr: TRegistry;
tmp:string;
begin
result:=true;
try
Rejestr:=TRegistry.Create;
Rejestr.RootKey:=HKEY_LOCAL_MACHINE;
Rejestr.OpenKey(Reg_Termin+'\'+name,false);
except
on ERegistryException do begin
result:=false;
exit;
end;
end;
tmp:=Rejestr.ReadString(R_comment);
sc.comm:=tmp;
tmp:=Rejestr.ReadString(R_enabled);
sc.enabled:=t_zerojeden(tmp);
tmp:=Rejestr.ReadString(R_howmany);
sc.ilerazy:=strtointdef(tmp,10);
tmp:=Rejestr.ReadString(R_random);
sc.rand:=strtointdef(tmp,100);
tmp:=Rejestr.ReadString(R_coile);
sc.coile:=strtointdef(tmp,1);
tmp:=Rejestr.ReadString(R_yr1);
sc.yr1:=strtointdef(tmp,0);
tmp:=Rejestr.ReadString(R_yr2);
sc.yr2:=strtointdef(tmp,0);
tmp:=Rejestr.ReadString(R_m1);
sc.m1:=strtointdef(tmp,0);
tmp:=Rejestr.ReadString(R_m2);
sc.m2:=strtointdef(tmp,0);
tmp:=Rejestr.ReadString(R_d1);
sc.d1:=strtointdef(tmp,0);
tmp:=Rejestr.ReadString(R_d2);
sc.d2:=strtointdef(tmp,0);
tmp:=Rejestr.ReadString(R_h1);
sc.h1:=strtointdef(tmp,0);
tmp:=Rejestr.ReadString(R_h2);
sc.h2:=strtointdef(tmp,0);
tmp:=Rejestr.ReadString(R_mi1);
sc.mi1:=strtointdef(tmp,0);
tmp:=Rejestr.ReadString(R_mi2);
sc.mi2:=strtointdef(tmp,0);
tmp:=Rejestr.ReadString(R_dw1);
sc.dw1:=strtointdef(tmp,0);
tmp:=Rejestr.ReadString(R_dw2);
sc.dw2:=strtointdef(tmp,0);
sc.m0:=Przerobka(sc.m1,sc.m2);
sc.d0:=Przerobka(sc.d1,sc.d2);
sc.h0:=Przerobka(sc.h1,sc.h2);
sc.yr0:=Przerobka(sc.yr1,sc.yr2);
sc.mi0:=Przerobka(sc.mi1,sc.mi2);
sc.dw0:=Przerobka(sc.dw1,sc.dw2);
sc.skrypt:=TStringList.create;
try
repeat
tmp:=Rejestr.Readstring(R_script+inttostr(sc.skrypt.count));
if tmp<>'' then sc.skrypt.add(tmp);
until tmp='';
except
on ERegistryException do
begin
Rejestr.CloseKey;
Rejestr.Free;
exit;
end;
end;
end;
function WriteTermin(name:string;sc:PTermin):boolean;
var Rejestr: TRegistry;
i:integer;
begin
result:=true;
try
Rejestr:=TRegistry.Create;
Rejestr.RootKey:=HKEY_LOCAL_MACHINE;
Rejestr.OpenKey(Reg_Termin+'\'+name,false);
except
on ERegistryException do begin
result:=false;
exit;
end;
end;
Rejestr.WriteString(R_comment,sc.comm);
Rejestr.WriteString(R_enabled,t_bool(sc.enabled));
Rejestr.WriteString(R_howmany,inttostr(sc.ilerazy));
Rejestr.WriteString(R_random,inttostr(sc.rand));
Rejestr.WriteString(R_coile,inttostr(sc.coile));
Rejestr.WriteString(R_yr1,inttostr(sc.yr1));
Rejestr.WriteString(R_yr2,inttostr(sc.yr2));
Rejestr.WriteString(R_m1,inttostr(sc.m1));
Rejestr.WriteString(R_m2,inttostr(sc.m2));
Rejestr.WriteString(R_d1,inttostr(sc.d1));
Rejestr.WriteString(R_d2,inttostr(sc.d2));
Rejestr.WriteString(R_h1,inttostr(sc.h1));
Rejestr.WriteString(R_h2,inttostr(sc.h2));
Rejestr.WriteString(R_mi1,inttostr(sc.mi1));
Rejestr.WriteString(R_mi2,inttostr(sc.mi2));
Rejestr.WriteString(R_dw1,inttostr(sc.dw1));
Rejestr.WriteString(R_dw2,inttostr(sc.dw2));
for i:=0 to sc.skrypt.count-1 do
Rejestr.Writestring(R_script+inttostr(i),sc.skrypt.strings[i]);
Rejestr.Writestring(R_script+inttostr(sc.skrypt.count),'');
Rejestr.DeleteValue(R_script+inttostr(sc.skrypt.count));
Rejestr.Closekey;
Rejestr.Free;
end;
procedure UsunTerminy;
var i:integer;
begin
if terminy=0 then exit;
for i:=1 to terminy do
begin
termin[i].skrypt.free;
dispose(termin[i]);
end;
end;
procedure LoadTerminy;
var Rejestr: TRegistry;
i:integer;
ter:Ptermin;
sc:Tstringlist;
begin
terminy:=0;
Rejestr:=TRegistry.Create;
Rejestr.RootKey:=HKEY_LOCAL_MACHINE;
sc:=Tstringlist.Create;
Rejestr.OpenKey(Reg_Termin,false);
Rejestr.GetKeyNames(sc);
Rejestr.CloseKey;
Rejestr.Free;
for i:=0 to sc.count-1 do
begin
inc(terminy);
new(ter);
ter.name:=sc[i];
termin[terminy]:=ter;
LoadTermin(sc[i],ter);
end;
end;
procedure WriteTerminy;
var i:integer;
begin
for i:=1 to terminy do
WriteTermin(termin[i].name,termin[i]);
end;
procedure WriteScript(name,comment:string);
var Rejestr: TRegistry;
begin
Rejestr:=TRegistry.Create;
Rejestr.RootKey:=HKEY_LOCAL_MACHINE;
if Rejestr.KeyExists(Reg_Script+'\'+name)
then Rejestr.DeleteKey(Reg_Script+'\'+name);
Rejestr.OpenKey(Reg_Script+'\'+name,true);
Rejestr.WriteString(R_comment,comment);
Rejestr.CloseKey;
Rejestr.Free;
defname:=name;
end;
procedure WriteTerminValue(key,value:string);
var Rejestr: TRegistry;
begin
Rejestr:=TRegistry.Create;
Rejestr.RootKey:=HKEY_LOCAL_MACHINE;
Rejestr.OpenKey(Reg_Termin+'\'+defname,true);
Rejestr.WriteString(key,value);
Rejestr.CloseKey;
Rejestr.Free;
end;
procedure WriteTerminHeader(name,comment:string);
var Rejestr: TRegistry;
begin
Rejestr:=TRegistry.Create;
Rejestr.RootKey:=HKEY_LOCAL_MACHINE;
if Rejestr.KeyExists(Reg_Termin+'\'+name)
then Rejestr.DeleteKey(Reg_Termin+'\'+name);
Rejestr.OpenKey(Reg_Termin+'\'+name,true);
Rejestr.WriteString(R_comment,comment);
Rejestr.CloseKey;
Rejestr.Free;
defname:=name;
end;
procedure Termindelete(name:string);
var Rejestr: TRegistry;
begin
Rejestr:=TRegistry.Create;
Rejestr.RootKey:=HKEY_LOCAL_MACHINE;
if Rejestr.KeyExists(Reg_Termin+'\'+name)
then Rejestr.DeleteKey(Reg_Termin+'\'+name);
Rejestr.Free;
end;
procedure scriptdelete(name:string);
var Rejestr: TRegistry;
begin
Rejestr:=TRegistry.Create;
Rejestr.RootKey:=HKEY_LOCAL_MACHINE;
if Rejestr.KeyExists(Reg_Script+'\'+name)
then Rejestr.DeleteKey(Reg_Script+'\'+name);
Rejestr.Free;
end;
procedure WriteScriptline(linenr,line:string);
var Rejestr: TRegistry;
nr:integer;
begin
nr:=strtointdef(linenr,9999);
if nr=9999 then exit;
Rejestr:=TRegistry.Create;
Rejestr.RootKey:=HKEY_LOCAL_MACHINE;
Rejestr.OpenKey(Reg_Script+'\'+defname,true);
Rejestr.WriteString(R_line+linenr,line);
Rejestr.CloseKey;
Rejestr.Free;
end;
function LoadScript(name:string;sc:Pscript):boolean;
var Rejestr: TRegistry;
tmp:string;
begin
result:=true;
try
Rejestr:=TRegistry.Create;
Rejestr.RootKey:=HKEY_LOCAL_MACHINE;
Rejestr.OpenKey(Reg_Script+'\'+name,false);
except
on ERegistryException do begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -