//启动tsl编辑器 //20230421 整理代码 uses tslvcl; deletefuncacheini(); //清空缓存 ops := ""; //待打开文件 GLobal G_OpenHostory; G_OpenHostory := true; //默认打开历史文件标记 hasinstance := true; //单独进程 isdebug := false; for i:= 0 to sysparamcount() do begin if ("-DEBUGSERVER" = sysparamstr(i)) then //调试标记 begin isdebug := true; end else if (i200) and ((FCurrentRect[2]-FCurrentRect[0])>200) then BoundsRect := FCurrentRect; end //_wapi.SetForegroundWindow(seLF.Handle); end} inherited; end function CreateParams(p);override; begin inherited; p.WinClassName := "tslediter_a_a_1"; end private FCurrentRect; end function InStallToMenu(); //注册 begin uses utslvclinstall; o := new t_tsl_window_reg(); o.installforall := true; if o.has_reg_authority() then begin reg := 0; if o.install_info_set()=0 then echo "\r\nset install info ok!!"; if o.install_backmenuopen()=0 then echo "\r\nset open menu ok!!"; if o.install_backmenu()=0 then echo "\r\nset back menu ok!!"; end else begin return echo "\r\nPlease run with administrator rights!!"; end return ; //k1 := new TRegKey(class(TRegKey).HKEY_CLASSES_ROOT); k := class(TRegKey).GetRegKeyMachine(); k1 := k.openKeyA("SOFTWARE\\Classes"); tek := k1.openKeyA("*\\shell\\tsleditor"); if not ifobj(tek) then begin return echo "Please run with administrator rights!!"; end tek.SetValueStringA(nil,"TSL本地编辑器"); tek.SetValueStringA("Icon",SysExecName()); tc := tek.openKeyA("command"); if not ifobj(tc) then begin echo "Please run with administrator rights!!"; end else begin tc.SetValueStringA(nil,SysExecName()+ ' "%1"'); bkcl := k1.openKeyA("Directory\\Background\\shell\\tsleditor\\command"); if bkcl then bkcl.SetValueStringA(nil,SysExecName()); bkcl := k1.openKeyA("Directory\\Background\\shell\\tsleditor"); bkcl.SetValueStringA(nil,"TSL Editor"); if bkcl then bkcl.SetValueStringA("Icon",SysExecName()); echo "register tsleditor ok ~~"; end end function UnInStallToMenu(); //卸载 begin uses utslvclinstall; o := new t_tsl_window_reg(); o.installforall := true; if o.has_reg_authority() then begin reg := o.get_uninstall_reg(1); if ifobj(reg) then begin reg := nil; if 0=o.uninstall_backmenu() then echo "\r\ndelete back menu ok "; if 0=o.uninstall_backmenuopen() then echo "\r\ndelete open menu ok "; if 0=o.install_info_remove() then echo "\r\ndelete install info ok "; end else begin return echo "\r\nnot installed!!"; end end else begin return echo "\r\n try run with administrator rights!!"; end return ; //k1 := new TRegKey(class(TRegKey).HKEY_CLASSES_ROOT); k := class(TRegKey).GetRegKeyMachine(); k1 := k.openKeyA("SOFTWARE\\Classes"); tc := k1.openKeyA("*\\shell"); if not ifobj(tc) then begin echo "Please run with administrator rights!!"; return; end else begin if 0=tc.DeleteKeyA("tsleditor\\command") then begin if 0=tc.DeleteKeyA("tsleditor") then begin bkcl := k1.openKeyA("Directory\\Background\\shell"); if ifobj(bkcl) then begin if 0=bkcl.DeleteKeyA("tsleditor\\command") then begin if 0=bkcl.DeleteKeyA("tsleditor") then begin end end end echo "unregister tsleditor ok~~"; return ; end end echo "tsleditor not installed~~"; return ; end end function deletefuncacheini(); begin plg := pluginpath(); {$ifdef linux} sp :="/"; {$else} sp := "\\"; {$endif} for i:= length(plg)-1 downto 1 do begin if plg[i]=sp then begin fn := plg[1:i]+"FunCache.ini"; r := filedelete("",fn); return r; end end end {$ifdef linux} function PostMessageA(hWnd:pointer;Msg:integer;wParam:pointer;lParam:pointer)begin end ; function FindWindowA(lpClassName:string;lpWindowName:string)begin end ; function GetCurrentDirectoryA(nBufferLength:integer; var lpBuffer:string)begin end ; function TS_GetUserProfileHome()begin end ; {$else} function PostMessageA(hWnd:pointer;Msg:integer;wParam:pointer;lParam:pointer):integer;stdcall;external "User32.dll" name "PostMessageA"; function FindWindowA(lpClassName:string;lpWindowName:string):pointer;stdcall;external "User32.dll" name "FindWindowA"; function GetCurrentDirectoryA(nBufferLength:integer; var lpBuffer:string):integer;stdcall;external "Kernel32.dll" name "GetCurrentDirectoryA"; function TS_GetUserProfileHome():string;cdecl;external "TSSVRAPI.dll" name "TS_GetUserProfileHome"; {$endif}