AXScript.pas,从官方站点找到的IActivsScript接口
2006-02-04 13:48:58 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佺粯鍔﹂崜娆撳礉閵堝洨纾界€广儱鎷戦煬顒傗偓娈垮枛椤兘骞冮姀銈呯閻忓繑鐗楃€氫粙姊虹拠鏌ュ弰婵炰匠鍕彾濠电姴浼i敐澶樻晩闁告挆鍜冪床闂備胶绮崝锕傚礈濞嗘挸绀夐柕鍫濇川绾剧晫鈧箍鍎遍幏鎴︾叕椤掑倵鍋撳▓鍨灈妞ゎ厾鍏橀獮鍐閵堝懐顦ч柣蹇撶箲閻楁鈧矮绮欏铏规嫚閺屻儱寮板┑鐐板尃閸曨厾褰炬繝鐢靛Т娴硷綁鏁愭径妯绘櫓闂佸憡鎸嗛崪鍐簥闂傚倷娴囬鏍垂鎼淬劌绀冮柨婵嗘閻﹂亶姊婚崒娆掑厡妞ゃ垹锕ら埢宥夊即閵忕姷顔夐梺鎼炲労閸撴瑩鎮橀幎鑺ョ厸闁告劑鍔庢晶鏇犵磼閳ь剟宕橀埞澶哥盎闂婎偄娲ゅù鐑剿囬敃鈧湁婵犲﹤鐗忛悾娲煛鐏炶濡奸柍瑙勫灴瀹曞崬鈻庤箛鎾寸槗缂傚倸鍊烽梽宥夊礉鎼达絽鍨濇い鏍仜妗呴梺鍛婃处閸ㄦ壆绮婚幎鑺ュ€甸柨婵嗙凹缁ㄨ棄霉閻樿崵鐣烘慨濠冩そ濡啫鈽夊▎鎰€烽梺璇插閻噣宕¢幎鑺ュ仒妞ゆ洍鍋撶€规洖鐖奸、妤佸緞鐎n偅鐝┑鐘愁問閸n垳寰婇崜褉鍋撶粭娑樻搐缁犳煡鏌涢妷顔煎闁藉啰鍠栭弻锝夊棘閹稿孩鍠愰梺鑽ゅ枎缂嶅﹪寮诲☉鈶┾偓锕傚箣濠靛洨浜俊鐐€ら崜娆撴偋閸℃稈鈧棃宕橀鍢壯囧箹缁厜鍋撻懠顒€鍤紓鍌氬€风欢锟犲窗濡ゅ懎绠伴柟闂寸劍閸嬧晠鏌i幋锝嗩棄缁绢厸鍋撻梻浣虹帛閸旀洜绮旈棃娴虫盯宕橀鍏兼К闂侀€炲苯澧柕鍥у楠炴帡骞嬪┑鎰磻闁诲氦顫夐幐椋庣矆娓氣偓閸╃偤骞嬮敂钘変汗闂佸湱绮敮鈺傚閳ь剛绱撴担鐟板姢鐟滄壆鍋熼崚鎺戔枎閹惧疇鎽曞┑鐐村灦閻喖鈻介鍫熺厵閻熸瑥瀚慨鍥ㄣ亜閵夛妇绠炴慨濠冩そ閺屽懘鎮欓懠璺侯伃婵犫拃鍌氬祮闁哄瞼鍠栭幖褰掝敃閿濆懐锛撻梻浣瑰缁诲嫰宕戝☉銏犵厴闁瑰濮崑鎾绘晲鎼存ê浜炬い鎾寸⊕濞呭﹪鏌$仦鐣屝f繛纰变邯楠炲繒浠﹂挊澶婅厫闂傚倷鐒﹂惇褰掑磹閺囥垹绠犻柟閭﹀枟椤洟鏌熼幆褏鎽犲┑顖涙尦閺屾盯骞橀弶鎴犵シ闂佸憡鎸稿畷顒勨€旈崘顔嘉ч柛鈩冾殘娴犳悂姊洪懡銈呮毐闁哄懏鐩幃楣冩倻閽樺)銊ф喐婢舵劕纾婚柟鍓х帛閺呮煡骞栫划鐟板⒉闁诲繐绉瑰铏圭磼濡闉嶅┑鐐插级閿曘垺淇婇悽绋跨妞ゆ牗姘ㄩ悿鈧梻鍌氬€搁悧濠勭矙閹邦喛濮抽柤娴嬫櫇绾捐棄霉閿濆牊顥夐柣鎾村姈閹便劌螣缁嬪灝顬嬪┑鈥冲级閸旀瑩鐛Ο鍏煎珰闁肩⒈鍓﹀Σ浼存⒒娴gǹ鏆遍柟纰卞亰瀹曟劖绻濆В绋挎喘瀵埖鎯旈幘瀛樻澑婵$偑鍊栧濠氬Υ鐎n亶鍟呴柕澶涜礋娴滄粍銇勯幘璺轰粶婵℃彃顭烽弻锝夋晲閸パ冨箣濡ょ姷鍋炵敮锟犵嵁鐎n喖绫嶉柍褜鍓熼幃妤佺節濮橆厸鎷洪柣鐔哥懃鐎氼參宕曞Δ鍛厱婵☆垵銆€閸嬫捇鎮㈤幓鎺戠阀濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻戦妵鍕箻閸楃偟浠肩紒鐐劤椤兘寮婚悢鐓庣鐟滃繒鏁☉銏$厓闂佸灝顑呴悘锕傛煏閸パ冾伃妤犵偞甯″畷鍗烆渻閹屾缂傚倸鍊搁崐椋庣矆娓氣偓钘濋梺顒€绉撮弸浣糕攽閻樿櫕鐨戠€规挷绶氶弻娑㈠焺閸愵亖濮囬梺绋匡功閸忔﹢寮诲☉妯锋斀闁糕剝顨忔导鈧俊鐐€栧褰掑礉閺囥垹鐓橀柟杈鹃檮閸婂鏌涢妷銏℃珖閺嶏繝姊绘担鍛婂暈闁圭ǹ顭烽幃鐑芥晜閻e备鏀虫繝鐢靛Т濞诧箓宕甸崘顔界厓闁告繂瀚弳鐔兼煥濞戞瑧鐭掓慨濠囩細閵囨劙骞掗幋婊冩瀳闂備礁鎲¢悷銉︻殽閹间礁鐓濋柟鐐灱閸亪鏌涢銈呮灁闁告ɑ鎮傞弻锝堢疀閺囩偘鎴风紒缁㈠幖閻栫厧鐣烽幋锕€绠婚悹鍥皺閻も偓濠电偠鎻徊浠嬪箟閿熺姴纾规い鏍仦閳锋垹鐥鐐村櫣濞存粌缍婇幃璺衡槈閺嵮冨Е闂佺硶鏂侀崑鎾愁渻閵堝棗绗掗柛鐕佸亰閹啫煤椤忓懐鍘告繛杈剧到濠€杈ㄦ櫠椤忓牊鐓冮悷娆忓閻忔挳鏌熼鐣屾噰鐎殿喖鐖奸獮瀣偐鏉堫煈鏁囬梻鍌氬€风粈浣革耿鏉堛劎浠氶梻浣侯攰婵倗鍒掓惔銊ョ闁圭儤顨呯猾宥夋煕椤愩倕鏋庡ù鐘烘缁辨挻鎷呴崜鎻掑壍濡炪倖娲樻繛濠囧极閸愵喖纾兼繛鎴炶壘楠炲牓姊绘担鍛婃儓婵炲眰鍨藉畷婵嗙暆閸曨剙鈧爼鏌eΟ鑲╁笡闁绘挻娲熼弻鐔兼嚋椤掆偓婵$厧霉濠婂嫬鍔ら柍瑙勫灴閺佸秹宕熼鈩冩線闂備胶枪閿曘儵鎮ч悩鑼殾婵犻潧顑嗛弲婵嬫煃瑜滈崜鐔煎灳閿曞倸閿ゆ俊銈傚亾闁绘帒鐏氶妵鍕箳瀹ュ牆鍘$紓浣哄Т婢т粙鍩€椤掆偓閸樻粓宕戦幘鏂ユ斀闁绘ǹ浜粣鏃堟煕鐎n偒娈旈柍瑙勫灴椤㈡瑧娑甸悜鐣屽弽婵犵數鍋涢幏鎴犲緤閸啣锝夊箛閺夎法顔婇梺鐟板暱绾绢參宕伴幘璇茬闁绘ḿ绮崵鎴︽煠缁嬭法浠涙慨锝嗗姍濮婂宕掑顑藉亾閻戣姤鍤勯柤鍝ユ暩娴犳碍绻濋悽闈涗粶妞ゆ洦鍙冨畷妤€螣娓氼垰娈ㄥ銈嗗姂閸婃牜鈧碍姘ㄩ埀顒傛嚀婢瑰﹪宕伴弽褉鏋旈柕濠忓缁♀偓闂佹眹鍨藉ḿ褎鐗庣紓浣哄亾濠㈡ḿ绮旈悷閭﹀殨闁哄被鍎辩粻鐢告煙閻戞ḿ绠橀柛鐐垫暬閺岋綁鎮╅悜姗嗕哗闁诲繐绻堥崝宀勵敊韫囨稑唯鐟滃宕戦幘鑸靛枂闁告洦鍓欑喊宥呪攽閳藉棗浜濈紒璇插€块敐鐐剁疀濞戞瑦鍎梺闈╁瘜閸橀箖鏁嶅⿰鍐f斀闁宠棄妫楅悘鐘绘煙绾板崬浜伴柨婵堝仜椤撳ジ宕堕埡鍐跨闯濠电偠鎻紞渚€藟閹捐绀夌€广儱顦伴悡娆戠磼鐎n亞浠㈤柡鍡涗憾閺岋綁鏁愰崶褍骞嬪Δ鐘靛仜椤戝寮崘顔肩劦妞ゆ帒鍊绘稉宥呪攽閻樺磭顣查柛瀣剁秮閺屾盯濡烽幋婵嗘殶濡ょ姴娲幃妤冩喆閸曨剙纰嶇紓浣割槹閹告娊鍨鹃弮鍫濈妞ゆ柨妲堣閺屾盯鍩勯崗鐙€浜Λ鍕吋閸モ晝锛濇繛杈剧到婢瑰﹪宕曢幇鐗堢厱闁靛ǹ鍎遍。宕囩磼椤旂⒈鍎忔い鎾冲悑瀵板嫮鈧綆浜栭崑鎾绘煥鐎c劋绨婚梺鐟版惈缁夊爼藝閿旈敮鍋撳▓鍨灈闁诲繑绻堥崺鐐哄箣閿曗偓閻擄繝鏌涢埄鍐炬畼濞寸媭鍨跺娲川婵犲海鍔堕梺鍛婃处閸欏骸煤閸涘﹣绻嗛柕鍫濈箳閸掍即鏌涢悤浣哥仸鐎规洘鍔欏畷褰掝敃閿濆懎浼庢繝纰樻閸ㄦ娊宕㈣缁傚秵銈i崘鈺佲偓鍨叏濡厧浜鹃悗姘炬嫹

{unti AXScript v.1.0 05/28/97 - converted header file for Microsoft ActiveScript.
Original conversion of the ActiveScript header by David Zajac (dzajac@HiWAAY.net)
for Delphi 2.x.
Modified by Brian DuPRas (bdupras@dimensional.com) for Delphi 3.0 using interfaces
instead of classes (which was necessary for D2).
This unit is released to the public. No warrenty or guarentee of *anything*
is expressed or implied. Use this code at your own risk - any damage is your
own fault for trusting me. If you find any error in this code, fix it. If
you're nice, let me know about the error so I can fix it, too.
This code has to date (May 28, 1997) only been tested for creating a host for
ActiveScript. I have not tried creating a scripting engine with it (and probably
never will). But I've been able to host both MS JScript and MS VBScript.
Good luck,
Brian Dupras 5/28/97
----------------------------------------------------------------------------------
Ahh..updates. I've updated this unit slilghtly, and created a helper unit called
(and aptly so) AXScriptHelp. The only major additions were those to support
MS IE4. The other updates to this unit were minor - a few slight type differences
and some parameter name changes. Mostly cosmetic stuff.
Again, Good luck,
Brian 7/6/97
By the way, JScript, VBScript and ActiveScript are registered trademarks of
Microsoft Corporation.
----------------------------------------------------------------------------------
More updates still. Thank you Gary Warren King for noticing that I'm an idiot.
The identifiers : SCRIPTTHREADID_CURRENT, SCRIPTTHREADID_BASE, and
SCRIPTTHREADID_ALL were originally thought to be C++ MACROS. Upon second look,
however, they're not macros, they're #define constants that typcast the values
-1, -2, and -3 to the #typdef SCRIPTTHREADID. Looking into another's activescript
conversion confirmed this, so the change has been made and duely noted.
We'll call this version 1.1 of the ActivScp.h conversion.
Brian Dupras 8/26/97
p.s. At the time of this writing, a slightly older demo using this header is
available at the Delphi Super Page. The URL is
http://SunSITE.icm.edu.pl/delphi/, and the file is axscpd1.zip. It can be
found under Delphi 3, Apps With Sources. I plan to pust axscpd2.zip real soon
now, so get that one if it's there.
}
unit AXScript;
interface
uses
Windows, ActiveX;
const
//Category IDs
CATID_ActiveScript:TGUID= '{F0B7A1A1-9847-11cf-8F20-00805F2CD064}';
CATID_ActiveScriptParse:TGUID= '{F0B7A1A2-9847-11cf-8F20-00805F2CD064}';
//Interface IDs
IID_IActiveScriptSite:TGUID= '{DB01A1E3-A42B-11cf-8F20-00805F2CD064}';
IID_IActiveScriptSiteWindow:TGUID= '{D10F6761-83E9-11cf-8F20-00805F2CD064}';
IID_IActiveScript:TGUID= '{BB1A2AE1-A4F9-11cf-8F20-00805F2CD064}';
IID_IActiveScriptParse:TGUID= '{BB1A2AE2-A4F9-11cf-8F20-00805F2CD064}';
IID_IActiveScriptParseProcedure:TGUID= '{1CFF0050-6FDD-11d0-9328-00A0C90DCAA9}';
IID_IActiveScriptError:TGUID= '{EAE1BA61-A4ED-11cf-8F20-00805F2CD064}';
// Constants used by ActiveX Scripting:
SCRIPTITEM_ISVISIBLE = $00000002;
SCRIPTITEM_ISSOURCE = $00000004;
SCRIPTITEM_GLOBALMEMBERS = $00000008;
SCRIPTITEM_ISPERSISTENT = $00000040;
SCRIPTITEM_CODEONLY = $00000200;
SCRIPTITEM_NOCODE = $00000400;
SCRIPTITEM_ALL_FLAGS = (SCRIPTITEM_ISSOURCE or
SCRIPTITEM_ISVISIBLE or
SCRIPTITEM_ISPERSISTENT or
SCRIPTITEM_GLOBALMEMBERS or
SCRIPTITEM_NOCODE or
SCRIPTITEM_CODEONLY);
// IActiveScript::AddTypeLib() input flags
SCRIPTTYPELIB_ISCONTROL = $00000010;
SCRIPTTYPELIB_ISPERSISTENT = $00000040;
SCRIPTTYPELIB_ALL_FLAGS = (SCRIPTTYPELIB_ISCONTROL or
SCRIPTTYPELIB_ISPERSISTENT);
// IActiveScriptParse::AddScriptlet() and IActiveScriptParse::ParseScriptText() input flags */
SCRIPTTEXT_DELAYEXECUTION = $00000001;
SCRIPTTEXT_ISVISIBLE = $00000002;
SCRIPTTEXT_ISEXPRESSION = $00000020;
SCRIPTTEXT_ISPERSISTENT = $00000040;
SCRIPTTEXT_HOSTMANAGESSOURCE = $00000080;
SCRIPTTEXT_ALL_FLAGS = (SCRIPTTEXT_DELAYEXECUTION or
SCRIPTTEXT_ISVISIBLE or
SCRIPTTEXT_ISEXPRESSION or
SCRIPTTEXT_HOSTMANAGESSOURCE or
SCRIPTTEXT_ISPERSISTENT);
// IActiveScriptParseProcedure::ParseProcedureText() input flags
SCRIPTPROC_HOSTMANAGESSOURCE = $00000080;
SCRIPTPROC_IMPLICIT_THIS = $00000100;
SCRIPTPROC_IMPLICIT_PARENTS = $00000200;
SCRIPTPROC_ALL_FLAGS = (SCRIPTPROC_HOSTMANAGESSOURCE or
SCRIPTPROC_IMPLICIT_THIS or
SCRIPTPROC_IMPLICIT_PARENTS);
// IActiveScriptSite::GetItemInfo() input flags */
SCRIPTINFO_IUNKNOWN = $00000001;
SCRIPTINFO_ITYPEINFO = $00000002;
SCRIPTINFO_ALL_FLAGS = (SCRIPTINFO_IUNKNOWN or
SCRIPTINFO_ITYPEINFO);
// IActiveScript::Interrupt() Flags */
SCRIPTINTERRUPT_DEBUG = $00000001;
SCRIPTINTERRUPT_RAISEEXCEPTION = $00000002;
SCRIPTINTERRUPT_ALL_FLAGS = (SCRIPTINTERRUPT_DEBUG or
SCRIPTINTERRUPT_RAISEEXCEPTION);
type
//new IE4 types
TUserHWND=HWND;
TUserBSTR=TBStr;
TUserExcepInfo=TExcepInfo;
TUserVariant=OleVariant;
// script state values
TScriptState = (
SCRIPTSTATE_UNINITIALIZED,
SCRIPTSTATE_STARTED,
SCRIPTSTATE_CONNECTED,
SCRIPTSTATE_DISCONNECTED,
SCRIPTSTATE_CLOSED,
SCRIPTSTATE_INITIALIZED
);
// script thread state values */
TScriptThreadState = (
SCRIPTTHREADSTATE_NOTINSCRIPT,
SCRIPTTHREADSTATE_RUNNING
);
// Thread IDs */
TScriptThreadID = DWord;
const //Note: these SCRIPTTHREADID constants were originally macros
//in the first version of this file. See the note at the top
//for more information. (Thanks to Gary Warren King.)
SCRIPTTHREADID_CURRENT = TScriptThreadId(-1);
SCRIPTTHREADID_BASE = TScriptThreadId(-2);
SCRIPTTHREADID_ALL = TScriptThreadId(-3);
type
//Forward declarations
IActiveScript = interface;
IActiveScriptParse = interface;
IActiveScriptParseProcedure = interface;
IActiveScriptSite = interface;
IActiveScriptSiteWindow = interface;
IActiveScriptError = interface;
IActiveScriptError = interface(IUnknown)
['{EAE1BA61-A4ED-11CF-8F20-00805F2CD064}']
// HRESULT GetExceptionInfo(
// [out] EXCEPINFO *pexcepinfo);
function GetExceptionInfo(out ExcepInfo: TExcepInfo): HRESULT; stdcall;
// HRESULT GetSourcePosition(
// [out] DWORD *pdwSourceCOntext,
// [out] ULONG *pulLineNumber,
// [out] LONG *plCharacterPosition);
function GetSourcePosition(out SourceContext: DWORD; out LineNumber: ULONG; out CharacterPosition: LONGINT): HRESULT; stdcall;
// HRESULT GetSourceLineText(
// [out] BSTR *pbstrSourceLine);
function GetSourceLineText(out SourceLine: LPWSTR): HRESULT; stdcall;
end; //IActiveScriptError interface
IActiveScriptSite = Interface(IUnknown)
['{DB01A1E3-A42B-11CF-8F20-00805F2CD064}']
// HRESULT GetLCID(
// [out] LCID *plcid);
// Allows the host application to indicate the local ID for localization
// of script/user interaction
function GetLCID(out Lcid: TLCID): HRESULT; stdcall;
// HRESULT GetItemInfo(
// [in] LPCOLESTR pstrName,
// [in] DWORD dwReturnMask,
// [out] IUnknown **ppiunkItem,
// [out] ITypeInfo **ppti);
// Called by the script engine to look up named items in host application.
// Used to map unresolved variable names in scripts to automation interface
// in host application. The dwReturnMask parameter will indicate whether
// the actual object (SCRIPTINFO_INKNOWN) or just a coclass type description
// (SCRIPTINFO_ITYPEINFO) is desired.
function GetItemInfo(const pstrName: POleStr; dwReturnMask: DWORD; out ppiunkItem: IUnknown; out Info: ITypeInfo): HRESULT; stdcall;
// HRESULT GetDocVersionString(
// [out] BSTR *pbstrVersion);
// Called by the script engine to get a text-based version number of the
// current document. This string can be used to validate that any cached
// state that the script engine may have saved is consistent with the
// current document.
function GetDocVersionString(out Version: TBSTR): HRESULT; stdcall;
// HRESULT OnScriptTerminate(
// [in] const VARIANT *pvarResult,
// [in] const EXCEPINFO *pexcepinfo);
// Called by the script engine when the script terminates. In most cases
// this method is not called, as it is possible that the parsed script may
// be used to dispatch events from the host application
function OnScriptTerminate(const pvarResult: OleVariant; const pexcepinfo: TExcepInfo): HRESULT; stdcall;
// HRESULT OnStateChange(
// [in] SCRIPTSTATE ssScriptState);
// Called by the script engine when state changes either explicitly via
// SetScriptState or implicitly via other script engine events.
function OnStateChange(ScriptState: TScriptState): HRESULT; stdcall;
// HRESULT OnScriptError(
// [in] IActiveScriptError *pscripterror);
// Called when script execution or parsing encounters an error. The script
// engine will provide an implementation of IActiveScriptError that
// describes the runtime error in terms of an EXCEPINFO in addition to
// indicating the location of the error in the original script text.
function OnScriptError(const pscripterror: IActiveScriptError): HRESULT; stdcall;
// HRESULT OnEnterScript(void);
// Called by the script engine to indicate the beginning of a unit of work.
function OnEnterScript: HRESULT; stdcall;
// HRESULT OnLeaveScript(void);
// Called by the script engine to indicate the completion of a unit of work.
function OnLeaveScript: HRESULT; stdcall;
end; //IActiveScriptSite interface
IActiveScriptSiteWindow = interface(IUnknown)
['{D10F6761-83E9-11CF-8F20-00805F2CD064}']
// HRESULT GetWindow(
// [out] HWND *phwnd);
function GetWindow(out Handle: HWND): HRESULT; stdcall;
// HRESULT EnableModeless(
// [in] BOOL fEnable);
function EnableModeless(fEnable: BOOL): HRESULT; stdcall;
end; //IActiveScriptSiteWindow interface
IActiveScript = interface(IUnknown)
['{BB1A2AE1-A4F9-11CF-8F20-00805F2CD064}']
// HRESULT SetScriptSite(
// [in] IActiveScriptSite *pass);
// Conects the host's application site object to the engine
function SetScriptSite(ActiveScriptSite: IActiveScriptSite): HRESULT; stdcall;
// HRESULT GetScriptSite(
// [in] REFIID riid,
// [iid_is][out] void **ppvObject);
// Queries the engine for the connected site
function GetScriptSite(riid: TGUID; out OleObject: Pointer): HRESULT; stdcall;
// HRESULT SetScriptState(
// [in] SCRIPTSTATE ss);
// Causes the engine to enter the designate state
function SetScriptState(State: TScriptState): HRESULT; stdcall;
// HRESULT GetScriptState(
// [out] SCRIPTSTATE *pssState);
// Queries the engine for its current state
function GetScriptState(out State: TScriptState): HRESULT; stdcall;
// HRESULT Close(void);
// Forces the engine to enter the closed state, resetting any parsed scripts
// and disconnecting/releasing all of the host's objects.
function Close: HRESULT; stdcall;
// HRESULT AddNamedItem(
// [in] LPCOLESTR pstrName,
// [in] DWORD dwFlags);
// Adds a variable name to the namespace of the script engine. The engine
// will call the site's GetItemInfo to resolve the name to an object.
function AddNamedItem(Name: POleStr; Flags: DWORD): HRESULT; stdcall;
// HRESULT AddTypeLib(
// [in] REFGUID rguidTypeLib,
// [in] DWORD dwMajor,
// [in] DWORD dwMinor,
// [in] DWORD dwFlags);
// Adds the type and constant defintions contained in the designated type
// library to the namespace of the scripting engine.
function AddTypeLib(TypeLib: TGUID; Major: DWORD; Minor: DWORD; Flags: DWORD): HRESULT; stdcall;
// HRESULT GetScriptDispatch(
// [in] LPCOLESTR pstrItemName,
// [out] IDispatch **ppdisp);
// Gets the IDispatch pointer to the scripting engine.
function GetScriptDispatch(ItemName: POleStr; out Disp: IDispatch): HRESULT; stdcall;
// HRESULT GetCurrentScriptThreadID(
// [out] SCRIPTTHREADID *pstidThread);
// Gets the script's logical thread ID that corresponds to the current
// physical thread. This allows script engines to execute script code on
// arbitrary threads that may be distinct from the site's thread.
function GetCurrentScriptThreadID(out Thread: TScriptThreadID): HRESULT; stdcall;
// HRESULT GetScriptThreadID(
// [in] DWORD dwWin32ThreadID,
// [out] SCRIPTTHREADID *pstidThread);
// Gets the logical thread ID that corresponds to the specified physical
// thread. This allows script engines to execute script code on arbitrary
// threads that may be distinct from the sites thread.
function GetScriptThreadID(Win32ThreadID: DWORD; out Thread: TScriptThreadID): HRESULT; stdcall;
// HRESULT GetScriptThreadState(
// [in] SCRIPTTHREADID stidThread,
// [out] SCRIPTTHREADSTATE *pstsState);
// Gets the logical thread ID running state, which is either
// SCRIPTTHREADSTATE_NOTINSCRIPT or SCRIPTTHEADSTATE_RUNNING.
function GetScriptThreadState(Thread: TScriptThreadID; out State: TScriptThreadState): HRESULT; stdcall;
// HRESULT InterruptScriptThread(
// [in] SCRIPTTHREADID stidThread,
// [in] const EXCEPINFO *pexcepInfo,
// [in] DWORD dwFlags);
// Similar to Terminatethread, this method stope the execution of a script thread.
function InterruptScriptThread(Thread: TScriptThreadID; const ExcepInfo: TExcepInfo; Flags: DWORD): HRESULT; stdcall;
// HRESULT Clone(
// [out] IActiveScript **ppscript);
// Duplicates the current script engine, replicating any parsed script text
// and named items, but no the actual pointers to the site's objects.
function Clone(out ActiveScript: IActiveScript): HRESULT; stdcall;
end; //IActiveScript interface
IActiveScriptParse = interface(IUnknown)
['{BB1A2AE2-A4F9-11CF-8F20-00805F2CD064}']
// HRESULT InitNew(void);
function InitNew: HRESULT; stdcall;
// HRESULT AddScriptlet(
// [in] LPCOLESTR pstrDefaultName,
// [in] LPCOLESTR pstrCode,
// [in] LPCOLESTR pstrItemName,
// [in] LPCOLESTR pstrSubItemName,
// [in] LPCOLESTR pstrEventName,
// [in] LPCOLESTR pstrDelimiter,
// [in] DWORD dwSourceContextCookie,
// [in] ULONG ulStartingLineNumber,
// [in] DWORD dwFlags,
// [out] BSTR *pbstrName,
// [out] EXCEPINFO *pexcepinfo);
function AddScriptlet(
DefaultName: POleStr;
Code: POleStr;
ItemName: POleStr;
SubItemName: POleStr;
EventName: POleStr;
Delimiter: POleStr;
SourceContextCookie: DWORD;
StartingLineNnumber: ULONG;
Flags: DWORD;
out Name: TBSTR;
out ExcepInfo: TExcepInfo
): HRESULT; stdcall;
// HRESULT STDMETHODCALLTYPE ParseScriptText(
// [in] LPCOLESTR pstrCode,
// [in] LPCOLESTR pstrItemName,
// [in] IUnknown *punkContext,
// [in] LPCOLESTR pstrDelimiter,
// [in] DWORD dwSourceContextCookie,
// [in] ULONG ulStartingLineNumber,
// [in] DWORD dwFlags,
// [out] VARIANT *pvarResult,
// [out] EXCEPINFO *pexcepinfo);
function ParseScriptText(
const pstrCode: POLESTR;
const pstrItemName: POLESTR;
const punkContext: IUnknown;
const pstrDelimiter: POLESTR;
dwSourceContextCookie: DWORD;
ulStartingLineNumber: ULONG;
dwFlags: DWORD;
out pvarResult: OleVariant;
out pExcepInfo: TExcepInfo
): HRESULT; stdcall;
end; //IActivScriptParse interface
IActiveScriptParseProcedure=interface(IUnknown)
['{1CFF0050-6FDD-11d0-9328-00A0C90DCAA9}']
function ParseProcedureText(
const pstrCode: POLESTR;
const pstrFormalParams: POLESTR;
const pstrItemName: POLESTR;
punkContext: IUnknown;
const pstrDelimiter: POLESTR;
dwSourceContextCookie: DWord;
ulStartingLineNumber: ULong;
dwFlags: DWord;
out ppdisp: IDispatch
): HResult; stdcall;
end; //IActivScriptParseProcedure interface
implementation
end.
更多精彩
赞助商链接