{ tsl界面设计器启动程序 } uses tslvcl,tslvclDesigner; deletefuncacheini(); isdebug := false; for i:= 0 to sysparamcount() do begin if ("-DEBUGSERVER" = sysparamstr(i)) then begin isdebug := true; break; end end h := FindWindowA("tsluidesigner_a_a_1",nil); //查找唯一窗口 if not(isdebug) and h then begin return PostMessageA(h,0x400,303,10); end app := InitializeApplication(); app.createform(class(TVclDesignerStart),Desginer); Desginer.Show(); r := app.run(); return r; type TVclDesignerStart = class(TVclDesigner) //实现唯一的窗口 function create(AOwner); begin inherited; end function WMUSER(o,e):WM_USER;override; begin if e.wparam = 303 and e.lparam=10 then begin Show(SW_SHOWMINIMIZED); PostMessageA(self.handle,WM_USER,303,12); end else if e.wparam = 303 and e.lparam=12 then begin Show(SW_SHOWNORMAL); _wapi.bringWindowToTop(self.Handle); end inherited; end function CreateParams(p);override; begin inherited; p.WinClassName := "tsluidesigner_a_a_1"; 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(); begin end function FindWindowA(); begin end {$else} function PostMessageA(hWnd:pointer;Msg:integer;wParam:pointer;lParam:pointer):integer;stdcall;external "User32.dll" name "PostMessageA"; //引入api function FindWindowA(lpClassName:string;lpWindowName:string):pointer;stdcall;external "User32.dll" name "FindWindowA";//引入api {$endif}