⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skrypt.pas

📁 2003年的远程控制
💻 PAS
📖 第 1 页 / 共 2 页
字号:
                           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 + -