A script alkalmazás
Általában az volt az elképzelés ActiveScripting nevét és áramlott egy külön technológia, amely számos mechanizmuson alapuló COM.
Active scripting testben
- IActiveScript
Ez az interfész kérik az első modul script nyelv és lehet inicializálni. Fogom fejteni módszerek SetScriptSite, AddNamedItem, SetScriptState GetScriptDispatch és végrehajtása a script host. - IActiveScriptParse
Az ezen irányelv végrehajtásához felület kezeléséért felelős script szöveg ParseScriptText módszerrel.
Active Scripting Engine jön létre, mint a normál COM objektum:
Ahhoz, hogy az egész kezdődött, mint valami működik, meg kell ismernünk, IActiveScriptSite felület, amelyen keresztül a forgatókönyvet modul kölcsönhatásba léphet az alkalmazás.
Hogy van a fogadó
Tehát meg kell végrehajtani, és adjon meg egy IActiveScriptSite script modul, mert valamit dolgozni.
Végre lehetséges MFC rendszer BEGIN_INTERFACE_MAP / INTERFACE_PART vagy a szokásos módon, leírja AddRef, Release és QueryInterface. Mivel a cél az, hogy exportálni csak egy interfész, IActiveScriptSite minden SOM- belsejét lehet elég könnyű festeni segítsége nélkül MFC. A részletes kód a példához kapcsolódik.
Miután a script modul inicializálása akkor át kell menni egy pointert ActiveScriptSite.
Most a script modul, hogyan kell kommunikálni a kérelmet, de semmi nem fut. Itt az ideje, hogy át jön néhány forgatókönyvet, és vezessük át IScriptParse felület feldolgozás és dob.
Ez még nem minden, az élet egyre nehezebb egy kicsit :). Most meg kell futtatni a bonyolult eljárás Test. By the way, ha a kód kiadására eljárások nyomon követése nem szükséges - a program automatikusan fut minden, ami nem tartozik semmilyen eljárást. A nyelv a C, a fogyasztók, hogy nem bővült az eljárások és függvények, beleesik a void main ().
Az első paraméter, mint látható, üres. Itt adhatja meg a nevét, a tárgy belső terében a forgatókönyvet. Egy üres paraméter azt a teret az összes funkció.
Miután megkapta a küldő, meg kell, hogy egy hívás keresztül Invoke módszer. miközben halad a szükséges paramétereket a funkciót. A mi esetünkben ez egy string a mérésbe.
Még az összes, hogy ez a mi függvény lefut, és megadta az ablakon, ezt a forgatókönyvet nem kell senkinek. Mindezek után mágikus megtörtént annak érdekében, hogy működjön együtt a belső objektum programot.
Interface IActiveScript AddNamedItem egy módszer, amely lehetővé teszi, hogy adjunk a különböző azonosítókat a script neve teret.
Tehát van hozzá ID, hogy eddig semmilyen információ nem. De ha valami VB-script, kérjük, olvassa el ezt az azonosítót, a motor automatikusan hívja a módszer fogadó IActiveScriptSite. GetItemInfo, ami már meg kellett volna végre hozzánk.
Object m_pScriptObject - egy mutatót a CCmdTarget mi örökös, ami által létrehozott MFC Automation technológiát.
Most a script teljesen biztonságosan alkalmazható az automatizálásra tulajdonságok és módszerek MyObject. Eljárás IActiveScriptSite :: OnScriptError lehet hivatkozni abban az esetben, futásidejű hiba.
Tehát azok, akik sikerült megvalósítani VBScript-automatizálás „természetes” módszer, gratulálok, és azok, akik nem értik sietett vigasztalni: A Microsoft kiadott egy ActiveX komponens úgynevezett ScriptControl, amely egyszerűsíti az összes fenti funkciókat, és rendezi őket egy elfogadható formában. Nem a sebesség csökkenése nélkül, természetesen. ).
A szkript komponens, akkor adjunk hozzá elég standard módszer VB: a komponensek párbeszédablakban. Ha ezt a tételt nem szerepel, ez elég ahhoz, hogy megtalálja azt a lemezt böngészése.
Azáltal, hogy a script komponens valamilyen formában programot (ezt a helyet hívjuk ScriptControl1), azt találjuk, hogy ő komponentik nem annyira szállodában: AllowUI, Nyelv és időtúllépés.
AllowUI tulajdonság határozza meg, hogy a szkript képes megjeleníteni a párbeszédpanelek, például hibaüzeneteket különböző MsgBox és InputBox.
Alapértelmezett nyelv tulajdonság értéke VBScript, de ugyanilyen jól tartalmazhat JScript nevét.
TimeOut tulajdonság határozza meg a maximális időtartam, amely után a script az erőszakkal befejeződött. Ez akkor hasznos, ha a szkript „véletlenül” letette.
Most már hozzáférhet a belső alkatrészek, miközben felfedezik néhány jellemzője, amelyek lehetővé teszik valami már elkezdődött, anélkül, hogy fájdalmas képzés: Eval és ExecuteStatment. Mint azt sejteni lehet, az első kiszámítja a kifejezést beírni a húr, és a másik végzi a teljes nyilatkozatot.
Lehet számítani minden kifejezést integer, string, boolean visszatérési funkciókat. Az eredmény vissza formájában VARIANT változót, amely, mint ismeretes, tartalmazhat az összes.
Nem valószínű, hogy átadja a fejlesztés Script vezérlés, akkor elégedett lehet csak a feldolgozott sorban. AddCode módszer lehetővé teszi, hogy adjunk egy pár sort, amit aztán le lehet futtatni a Run. Ha a függvény bemeneti paraméterek, ezeket a paramétereket is lehet továbbítani a Run.
A kód, amely kerül átvitelre a paraméter a módszer AddCode helyesnek kell lennie, és tartalmazhat egy vagy több eljárás vagy függvény. Ha a kódot adunk használatával AddCode hibás, akkor az összetevő kivételt dob. Fejlesztő feladat -, hogy elkapjam a hibát, és hagyja, hogy a felhasználó tudja, hogy a felhasználó feladata -, hogy írjon okos szkripteket.
Általánosságban elmondható, hogy van egy Script Ellenőrzési Hiba Hiba esetén az azonos nevű és egy tulajdonság, hogy az úgynevezett hiba esetén. Abban az esetben, egy futási hiba a legjobb, ha ez az ingatlan, mert több információt hordoz a hiba, mint a standard változat Err.
Ami a belső objektum a program, akkor az exportáló a szkript nevét tér sokkal könnyebb, mint a Visual C ++. AddObject módszer lehetővé teszi, hogy bővítse a rendelkezésre álló script tárgyakat. Ehhez hozzon létre egy osztály modult, és bejelenti, hogy a szükséges funkciókat és nyilvános tulajdonságokat.
Most, egy script lehet elég könnyen alkalmazható a bejelentett object1.
Így meg tudjuk rendezni a proxy objektum hozzáférési kontrollok a programban. Például lehetőség van arra, hogy hozzon létre egy YourClassModule funkció, amely hozzáad egyfajta sorra, eszköztárban vagy a menüben.
Vegye figyelembe, hogy ha azt akarjuk, hogy át néhány vagy belső változó script feldolgozni ClassModule, szükséges, hogy csak típusú változók Variant.
A lehetőségek valóban korlátlanok kiadása során az ingatlan YourClassModule a belső alkatrészeket. Naprmer formát.