Spolupráce AutoLISPu s jinými aplikacemi je obdobná jako spolupráce AutoLISPu s ActiveX rozhraním. V AutoLISPu jsou dva základní postupy zajištění spolupráce s jinou aplikací:
Abychom mohli pracovat s ActiveX rozhraním jiné aplikace, musíme nejprve importovat knihovnu typů druhé aplikace. K importování knihovny typů slouží příkaz vlax-import-type-library (více informací o příkazu se dozvíte v referenční příručce AutoLISPu).
Po importování cesty si AutoCAD vytvoří tzv. zabalené (wrapped) funkce = funkce z knihovny typů (s definovanými prefixy). Jestli se Vám tyto funkce zdají povědomé, je to správně. V podstatě stejný přístup používá i AutoCAD při přidání funkcí pro spolupráci s rozhraním ActiveX (všechny funkce s prefixem vla-). Funkce jsou totiž vytvořeny importováním knihovny typů AutoCADu.
Před importováním knihovny typů musíme nejdřív zjistit umístění a jméno požadované knihovny typů, případně, když neuvedeme ke knihovně typů plnou cestu, musí knihovna ležet v prohledávací cestě AutoCADu. Abychom jsme se obešli bez přesného zadání knihovny typů můžeme nechat zadání cesty na uživateli Vaší aplikace.
Poznámka - jména a nejčastější umístění knihoven typů aplikací MS Office
Příklad importování knihovny typů MS Excelu, která je umístěná na disku C v adresáři Microsoft Office/Office/. Pro jména metod použijeme prefix exlm-, pro jména vlastností použijeme prefix exlv- a pro jména konstant použijeme prefix exlk-.
(vlax-import-type-library :tlb-filename "c:/excel9.olb" :methods-prefix "exlm-" :properties-prefix "exlv-" :constants-prefix "exlk-" )
Po importování knihovny typů aplikace, je možné používat nástroje Visual LISPu pro získání informací o importovaných funkcí.
V tuto chvíli již Visual LISP zná všechny funkce používané rozhraním ActiveX jiné aplikace. Abychom pomocí přidaných funkcí mohli s jinou aplikací pracovat, musíme si zpřístupnit její objekt Application. Zpřístupnění objektu uskutečníme pomocí funkce vlax-get-object nebo funkce vlax-create-object.
Funkcí vlax-get-object navážeme s aplikací spojení v případě, že aplikace (s kterou navazujeme spojení) je spuštěna. V opačném případu musíme použít funkci vlax-create-object - ta vytvoří objekt aplikace, spustí aplikaci. Pokud jsme museli použít funkci vlax-create-object není na první pohled nic vidět, musíme ještě použít funkci vla-put-visible. Ta způsobí, že vytvořený objekt aplikace je viditelný.
(setq exlAppObj (vlax-get-object "Excel.Application.9")) (if (equal nil exlAppObj) ;;; test jestli aplikace Excel je spuštěna (progn (setq exlAppObj (vlax-create-object "Excel.Application.9")) (vla-put-visible exlAppObj :vlax-true) ;;; nastavení vlastnosti viditelnost u objektu exlAppObj ;;; na true, všimněte si použití konstanty true ve ;;; formátu ActiveX ) )
Pokud v kódu neuvedeme číslo aplikace (verze aplikace) bude použita verze aplikace, která bude v systému nalezena.
Další postup spolupráce (navázáni dokumentu atd.) závisí již na konkrétní aplikaci.
Při používání funkcí jiné aplikace používáme funkce klasickým způsobem (stejně jako funkce ActiveX AutoCADu viz příklad).
Importování tabulky symbolů přináší přes své nesporné výhody jednu podstatnou nevýhodu - při importování rozsáhlé tabulky symbolů (např. u aplikací MS Office) je značně zatěžována paměť RAM. Z tohoto důvodu nabízí Visual LISP alternativu spolupráce s jinou aplikací - spolupráci bez použití importu tabulky symbolů.
Visual LISP obsahuje tři funkce pro spolupráci s aplikací bez importování tabulky symbolů:
Před používáním funkcí z jiné aplikace musíme, stejně jako v předešlém příkladě, navázat spojení s aplikací.
Funkce jiné aplikace poté používáme pomocí výše uvedených funkcí ( vlax-invoke-method, vlax-get-property a vlax-put-property) viz příklad.