//启动tsl编辑器 uses tslvcl; deletefuncacheini(); //mtic ; 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 k1 := new TRegKey(class(TRegKey).HKEY_CLASSES_ROOT); tek := k1.openKeyA("*\\shell\\tslediter"); 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\\tslediter\\command"); if bkcl then bkcl.SetValueStringA(nil,SysExecName()); bkcl := k1.openKeyA("Directory\\Background\\shell\\tslediter"); bkcl.SetValueStringA(nil,"TSL Editor"); if bkcl then bkcl.SetValueStringA("Icon",SysExecName()); echo "register tslediter ok ~~"; end end function UnInStallToMenu(); //卸载 begin k1 := new TRegKey(class(TRegKey).HKEY_CLASSES_ROOT); tc := k1.openKeyA("*\\shell"); if not ifobj(tc) then begin echo "Please run with administrator rights!!"; return; end else begin if 0=tc.DeleteKeyA("tslediter\\command") then begin if 0=tc.DeleteKeyA("tslediter") then begin bkcl := k1.openKeyA("Directory\\Background\\shell"); if ifobj(bkcl) then begin if 0=bkcl.DeleteKeyA("tslediter\\command") then begin if 0=bkcl.DeleteKeyA("tslediter") then begin end end end echo "unregister tslediter ok~~"; return ; end end echo "tslediter 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}