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

📄 skrypt.pas

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