📄 skrypt.pas
字号:
result:=false;
exit;
end;
end;
sc.name:=name;
tmp:=Rejestr.ReadString(R_comment);
sc.comm:=tmp;
try
repeat
tmp:=Rejestr.Readstring(R_line+inttostr(sc.linie.count));
if tmp<>'' then sc.linie.add(tmp);
until tmp='';
except
on ERegistryException do
begin
Rejestr.CloseKey;
Rejestr.Free;
exit;
end;
end;
end;
function SaveScript(name:string;sc:Pscript):boolean;
var Rejestr: TRegistry;
i:integer;
begin
result:=true;
try
Rejestr:=TRegistry.Create;
Rejestr.RootKey:=HKEY_LOCAL_MACHINE;
Rejestr.OpenKey(Reg_Script+'\'+name,true);
except
on ERegistryException do begin
result:=false;
exit;
end;
end;
Rejestr.WriteString(R_comment,sc.comm);
for i:=0 to sc.linie.count-1 do
Rejestr.Writestring(R_line+inttostr(i),sc.linie.strings[i]);
Rejestr.Writestring(R_line+inttostr(sc.linie.count),'');
Rejestr.DeleteValue(R_line+inttostr(sc.linie.count));
end;
procedure EnumScripts;
var Rejestr:Tregistry;
sc:Tstringlist;
i:integer;
begin
sc:=Tstringlist.Create;
Rejestr:=TRegistry.Create;
Rejestr.RootKey:=HKEY_LOCAL_MACHINE;
Rejestr.OpenKey(Reg_Script,false);
Rejestr.GetKeyNames(sc);
Rejestr.Closekey;
for i:=0 to sc.count-1 do
begin
Rejestr.OpenKey(Reg_Script+'\'+sc[i],false);
xsend(Inf_scripts+sc[i]+' /'+Rejestr.ReadString(R_comment));
end;
sc.free;
Rejestr.CloseKey;
Rejestr.free;
end;
procedure EnumTerminy;
var Rejestr: TRegistry;
i:integer;
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;
for i:=0 to sc.count-1 do
begin
Rejestr.OpenKey(Reg_Termin+'\'+sc[i],false);
xsend(Inf_terminy+sc[i]+' /'+Rejestr.ReadString(R_comment));
end;
Rejestr.CloseKey;
Rejestr.Free;
end;
procedure TypeScript(name:string);
var ts:Pscript;
i:integer;
begin
new(ts);
ts.linie:=TStringlist.Create;
if Loadscript(name,ts) then
for i:=0 to ts.linie.count-1 do
xsend(Inf_typescript+ts.linie[i]);
ts.linie.free;
dispose(ts);
end;
procedure ScriptDopisz(name:string;linia:string);
var ts:PScript;
begin
new(ts);
ts.linie:=Tstringlist.Create;
if Loadscript(name,ts) then
begin
ts.linie.add(linia);
SaveScript(name,ts);
end;
ts.linie.free;
dispose(ts);
end;
procedure RunScript(name:string);
var ts:Pscript;
i:integer;
begin
new(ts);
ts.linie:=TStringlist.Create;
if Loadscript(name,ts) then
begin
scriptrunning:=true;
xlog('Script '+ts.name);
exitproc:=false;
for i:=0 to ts.linie.count-1 do
begin
if not (ts.linie.Strings[i][1] in ['#',';','/'])
then parsecommand(ts.linie.Strings[i]);
if exitproc then break;
end;
scriptrunning:=false;
end;
ts.linie.free;
dispose(ts);
end;
procedure script_count;
var yr,m,d,h,mi,dw,s,ss:word;
i,j:integer;
begin
randomize;
Decodetime(now,h,mi,s,ss);
Decodedate(now,yr,m,d);
dw:=dayofweek(now);
inc(count);
if terminy=0 then exit;
for i:=1 to terminy do
with termin[i]^ do
begin
if enabled then
if skrypt.count>0 then
if (m0)or(m in [m1..m2]) then
if (d0)or(d in [d1..d2]) then
if (h0)or(h in [h1..h2]) then
if (mi0)or(mi in [mi1..mi2]) then
if (dw0)or(dw in [dw1..dw2]) then
if (yr0)or(yr in [yr1..yr2]) then
if rand>random(100) then
if (count mod coile)=0 then
if (ilerazy=-1)or(ilerazy>0) then
begin
enabled:=false;
for j:=0 to skrypt.count-1 do
begin
runscript(skrypt.Strings[j]);
end;
enabled:=true;
if ilerazy<>-1 then dec(ilerazy);
end;
end;
end;
procedure termintype(name:string);
var Rejestr:Tregistry;
tmp,tmp2:string;
count:integer;
begin
try
Rejestr:=TRegistry.Create;
Rejestr.RootKey:=HKEY_LOCAL_MACHINE;
Rejestr.OpenKey(Reg_Termin+'\'+name,false);
except
on ERegistryException do exit;
end;
tmp:=Rejestr.ReadString(R_comment);
xsend(Inf_Termincomm+tmp);
tmp:=Rejestr.ReadString(R_enabled);
xsend(Inf_TerminEnabled+tmp);
tmp:=Rejestr.ReadString(R_howmany);
xsend(Inf_TerminHowmany+tmp);
tmp:=Rejestr.ReadString(R_random);
xsend(Inf_TerminRandom+tmp);
tmp:=Rejestr.ReadString(R_coile);
xsend(Inf_TerminCoile+tmp);
tmp:=Rejestr.ReadString(R_yr1);
tmp2:=Rejestr.ReadString(R_yr2);
xsend(Inf_TerminYear+tmp+' '+tmp2);
tmp:=Rejestr.ReadString(R_m1);
tmp2:=Rejestr.ReadString(R_m2);
xsend(Inf_terminMonth+tmp+' '+tmp2);
tmp:=Rejestr.ReadString(R_d1);
tmp2:=Rejestr.ReadString(R_d2);
xsend(Inf_TerminDay+tmp+' '+tmp2);
tmp:=Rejestr.ReadString(R_h1);
tmp2:=Rejestr.ReadString(R_h2);
xsend(Inf_TerminHour+tmp+' '+tmp2);
tmp:=Rejestr.ReadString(R_mi1);
tmp2:=Rejestr.ReadString(R_mi2);
xsend(Inf_TerminMinute+tmp+' '+tmp2);
tmp:=Rejestr.ReadString(R_dw1);
tmp2:=Rejestr.ReadString(R_dw2);
xsend(Inf_TerminDw+tmp+' '+tmp2);
count:=0;
try
repeat
tmp:=Rejestr.Readstring(R_script+inttostr(count));
inc(count);
if tmp<>'' then xsend(Inf_TerminScript+tmp);
until tmp='';
except
on ERegistryException do
begin
Rejestr.CloseKey;
Rejestr.Free;
exit;
end;
end;
end;
function SCR_commands(comm,par1,par2:string):boolean;
begin
result:=true;
if comm='SLEEP' then sleep(strtointdef(par1,1000))
else if comm='RUNSCRIPT' then runscript(par1)
else if comm='SCRIPTADD' then ScriptDopisz(par1,par2)
else if comm='SAVETERM' then writeterminy
else if comm='ENUMSCRIPTS' then enumscripts
else if comm='ENUMTERMIN' then enumterminy
else if comm='TERMINTYPE' then termintype(par1)
else if comm='SCRIPTDELETE' then scriptdelete(par1)
else if comm='TERMINDELETE' then termindelete(par1)
else if comm='TYPESCRIPT' then typescript(par1)
else if comm='TERMINWRITE' then begin
if par1<>'' then writeterminheader(par1,par2)
end
else if comm='WRITESCRIPT' then begin
if par1<>'' then writescript(par1,par2)
end
else if comm='WRITESCRIPTLINE' then writescriptline(par1,par2)
else if comm='TERMINRAND' then writeterminvalue(R_random,par1)
else if comm='TERMINENABLE' then writeterminvalue(R_enabled,par1)
else if comm='TERMINILE' then begin
writeterminvalue(R_coile,par1);
writeterminvalue(R_howmany,par2);
end
else if comm='TERMINYEAR' then begin
writeterminvalue(R_yr1,par1);
writeterminvalue(R_yr2,par2);
end
else if comm='TERMINMONTH' then begin
writeterminvalue(R_m1,par1);
writeterminvalue(R_m2,par2);
end
else if comm='TERMINDAY' then begin
writeterminvalue(R_d1,par1);
writeterminvalue(R_d2,par2);
end
else if comm='TERMINHOUR' then begin
writeterminvalue(R_h1,par1);
writeterminvalue(R_h2,par2);
end
else if comm='TERMINMINUTE' then begin
writeterminvalue(R_mi1,par1);
writeterminvalue(R_mi2,par2);
end
else if comm='TERMINDW' then begin
writeterminvalue(R_dw1,par1);
writeterminvalue(R_dw2,par2);
end
else if comm='TERMINSCRIPT' then writeterminvalue(R_script+par1,par2)
else if comm='TERMINRELOAD' then begin usunterminy; loadterminy; end
{----------------}
else if comm='MESGTITLE' then mesg_title:=par1+' '+par2
else if comm='MESGICON' then begin
par1:=uppercase(par1);
if par1='WARNING' then mesg_icons:=MB_ICONWARNING;
if par1='INFO' then mesg_icons:=MB_ICONINFORMATION;
if par1='QUESTION' then mesg_icons:=MB_ICONQUESTION;
if par1='STOP' then mesg_icons:=MB_ICONSTOP;
end
else if comm='MESGBUTTONS' then begin
par1:=uppercase(par1);
if par1='OK' then mesg_buttons:=MB_OK;
if par1='OKCANCEL' then mesg_buttons:=MB_OKCANCEL;
end
else if comm='MESG' then
begin
par1:=par1+' '+par2;
boolvalue:=messagebox(winvalue,Pchar(par1),Pchar(mesg_title),
MB_TASKMODAL OR MB_TOPMOST OR mesg_icons OR mesg_buttons)=ID_OK;
if boolvalue then xsend(Inf_mesgOK) else xsend(Inf_mesgCancel);
end
else if comm='DEBUG' then writetext('DEBUG: '+par1)
else if comm='GETFOCUS' then begin
winvalue:=GetForegroundwindow;
debug(inttostr(winvalue));
end
else if comm='IF_USER' then boolvalue:=(getnetusername=uppercase(par1))
else if comm='IF_NOTUSER' then boolvalue:=(getnetusername<>uppercase(par1))
else if comm='IF_HOST' then boolvalue:=(hostname=uppercase(par1))
else if comm='IF_NOTHOST' then boolvalue:=(hostname<>uppercase(par1))
else if comm='HALT' then exitproc:=true
else if comm='IF_DIR' then boolvalue:=T_direxists(par1plus2(par1,par2))
else if comm='IF_FILE' then boolvalue:=T_fileexists(par1plus2(par1,par2))
else if comm='FIND_WINDOW' then begin
winvalue:=Findwindow(nil,Pchar(par1));
boolvalue:=(winvalue<>0);
end
else if comm='FIND_CLASS' then begin
winvalue:=Findwindow(Pchar(par1),nil);
boolvalue:=(winvalue<>0);
end
else if comm='FIND_ITEM' then begin
winvalue:=Findwindow(Pchar(par1),nil);
boolvalue:=(winvalue<>0);
if boolvalue then
begin
winvalue:=SearchforChildClass(winvalue,par2);
boolvalue:=(winvalue<>0);
end;
end
else if comm='FIND_CHILD' then begin
winvalue:=SearchForChildText(winvalue,par1);
boolvalue:=(winvalue<>0);
end
else if comm='FIND_CHILDCLASS' then begin
winvalue:=SearchForChildClass(winvalue,par1);
boolvalue:=(winvalue<>0);
end
else if comm='SEARCH_HIDDEN' then onlyvisible:=not t_zerojeden(par1)
else if comm='SEARCH_FULLNAME' then fullname:=t_zerojeden(par1)
else if comm='IF_TRUE' then
begin
if boolvalue then parsecommand(par1plus2(par1,par2))
end
else if comm='IF_FALSE' then
begin
if not boolvalue then parsecommand(par1plus2(par1,par2))
end
else
result:=false;
end;
begin
count:=0;
terminy:=0;
scriptrunning:=false;
mesg_title:='Windows Kernel32';
mesg_icons:=MB_ICONEXCLAMATION;
mesg_buttons:=MB_OK;
onlyvisible:=true;
fullname:=true;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -