當前位置:首頁 » 編程軟體 » activex執行腳本

activex執行腳本

發布時間: 2024-04-24 05:34:15

『壹』 ActiveX腳本編程的術語簡介

ActiveX scripting(ActiveX腳本編程)
一種使用腳本語言來驅動ActiveX組件的行為。

『貳』 ActiveX腳本編程的介紹

ActiveX Scripting 技術是Microsoft ActiveX 技術的一個組成部分,它的主要目的是使應用程序在不被修改的情況下,可被各種腳本語言所控制。比如大家比較熟悉的Microsoft Office中的Word字處理軟體,它提供了方便的BASIC語言的可編程特性,用戶可以通過編寫BASIC語言實現較為復雜的功能擴充。

『叄』 activeX控制項和腳本文件是什麼呀

ActiveX是使軟體組件能夠在網路環境中交互作用而與創建組件的語言無關的一套封裝技術。實現ActiveX 的基礎是「組件對象模型」(Component Object Model ,縮寫為COM)。它也是提供封裝 COM組件並將其置入應用程序(如(但不限於)Web 瀏覽器)的一種方法。
給ActiveX組件(ActiveX component)一個定義,就是:一個應用程序或開發工具,可以使用另一個應用程序支持的對象,或者提供自己的對象供另一個應用程序使用。以前這些程序和對象稱為「OLE 自動服務程序」和「OLE 自動伺服器」。
至於ActiveX控制項,則只是ActiveX組件的一個分類,是一個標準的用戶介面元素,是具有 .OCX 文件擴展名或者可插入對象的文件,能夠快速地把窗體和對話框組裝起來;當使用自定義控制項對話框將其增加到工程中去時,工具箱將被擴展。在以前ActiveX控制項被稱作 OLE 控制項

腳本是批處理文件的延伸,是一種純文本保存的程序,一般來說的計算機腳本程序是確定的一系列控制計算機進行運算操作動作的組合,在其中可以實現一定的邏輯分支等。
腳本程序相對一般程序開發來說比較接近自然語言,可以不經編譯而是解釋執行,利於快速開發或一些輕量的控制。
現在的腳本語言是比較多的,一般的腳本語言的執行只同具體的解釋執行器有關,所以只要系統上有相應語言的解釋程序就可以做到跨平台。
腳本(Script),就是含有bind和alias等命令的集合,你可以把這個集合存為一個獨立的文件然後在需要的時候執行,這樣就可以方便你在CS中的使用。

腳本可以存為後綴名為.cfg的文件放在cstrike文件夾下,執行時在控制台輸入:exec(腳本文件名).cfg即可。比如將一個腳本存為buys.cfg文件,則在控制台中輸入:execbuys.cfg則可以實現我們所需要的功能。要實現一個命令只要把這一過程定義(alias)好,並且分配一個鍵位給這個命令,以後只要按分配好的鍵位,就可以實現這一過程。所有的腳本都是通過這一方法實現的。

『肆』 ActiveX腳本編程的實現方式

應用系統也需要實現一些介面,分別為:IActiveScriptSite和IActiveScriptSiteWindow(可選)。介面IActiveScriptSite是每一個支持腳本語言的應用系統所必須實現的介面,腳本引擎通過它來獲取其宿主程序的信息,特別是在解釋腳本語言中一些名字時更需要用到這些信息,IActiveScriptSite的介面定義如下:
class IActiveScriptSite : public IUnknown
{
public :
virtual HRESULT GetLCID( LCID *plcid) = 0;
virtual HRESULT GetItemInfo( LPCOLESTR pstrName, DWORD dwReturnMask, IUnknown *ppiunkItem, ITypeInfo *ppti) = 0;
virtual HRESULT GetDocVersionString(BSTR *pbstrVersion) = 0;
virtual HRESULT OnScriptTerminate(const VARIANT *pvarResult, const EXCEPINFO *pexcepinfo) = 0;
virtual HRESULT OnStateChange( SCRIPTSTATE ssScriptState) = 0;
virtual HRESULT OnScriptError( IActiveScriptError *pscripterror) = 0;
virtual HRESULT OnEnterScript( void) = 0;
virtual HRESULT OnLeaveScript( void) = 0;
};
在這些成員函數中,GetItemInfo是關鍵函數,因為腳本引擎管理了一個名字空間,腳本引擎在解釋執行過程中,如果需要某個名字的信息,則通過宿主程序的IActiveScriptSite::GetItemInfo函數獲取。所以,應用系統通過GetItemInfo成員函數把自己的一些對象暴露給腳本引擎,以便在腳本文件中引用。
IActiveScriptSiteWindow介面是一個可選的介面,如果在腳本文件中要用到用戶介面UI特性,則應用系統應該實現IActiveScriptSiteWindow介面,其定義很簡單,如下:
class IActiveScriptSiteWindow : public IUnknown
{
public :
virtual HRESULT GetWindow( HWND *phwnd ) = 0;
virtual HRESULT EnableModeless( BOOL fEnable ) = 0;
};
腳本引擎通過GetWindow成員函數獲取宿主窗口句柄,作為腳本中彈出窗口的父窗口。
除了應用系統需要實現上面兩個介面用作它與腳本引擎之間的通訊之外,腳本引擎也實現了一組介面用作兩者之間的通訊,這組介麵包括:IActiveScript、IActiveScriptParse和其它一些用於調試、狀態管理或者錯誤處理的介面,IActiveScript和IActiveScriptParse是必須實現的介面,以下是它們的定義:
class IActiveScript : public IUnknown
{
public:
virtual HRESULT SetScriptSite( IActiveScriptSite *pass) = 0;
virtual HRESULT GetScriptSite( REFIID riid, void **ppvObject) = 0;
virtual HRESULT SetScriptState( SCRIPTSTATE ss) = 0;
virtual HRESULT GetScriptState( SCRIPTSTATE *pssState) = 0;
virtual HRESULT Close( void) = 0;
virtual HRESULT AddNamedItem( LPCOLESTR pstrName, DWORD dwFlags) = 0;
virtual HRESULT AddTypeLib( REFGUID rguidTypeLib, DWORD dwMajor, DWORD dwMinor, DWORD dwFlags) = 0;
virtual HRESULT GetScriptDispatch( LPCOLESTR pstrItemName, IDispatch **ppdisp) = 0;
virtual HRESULT GetCurrentScriptThreadID( SCRIPTTHREADID *pstidThread) = 0;
virtual HRESULT GetScriptThreadID( DWORD dwWin32ThreadId,SCRIPTTHREADID *pstidThread) = 0;
virtual HRESULT GetScriptThreadState( SCRIPTTHREADID stidThread, SCRIPTTHREADSTATE *pstsState) = 0;
virtual HRESULT InterruptScriptThread( SCRIPTTHREADID stidThread,const EXCEPINFO *pexcepinfo, DWORD dwFlags) = 0;
virtual HRESULT Clone( IActiveScript **ppscript) = 0;
};
class IActiveScriptParse : public IUnknown
{
public:
virtual HRESULT InitNew( void) = 0;
virtual HRESULT AddScriptlet( LPCOLESTR pstrDefaultName,LPCOLESTR pstrCode, LPCOLESTR pstrItemName, LPCOLESTR pstrSubItemName, LPCOLESTR pstrEventName, LPCOLESTR pstrDelimiter, DWORD dwSourceContextCookie, ULONG ulStartingLineNumber, DWORD dwFlags, BSTR *pbstrName, EXCEPINFO *pexcepinfo) = 0;
virtual HRESULT ParseScriptText( LPCOLESTR pstrCode, LPCOLESTR pstrItemName,IUnknown *punkContext, LPCOLESTR pstrDelimiter,DWORD dwSourceContextCookie, ULONG ulStartingLineNumber,DWORD dwFlags, VARIANT *pvarResult,EXCEPINFO *pexcepinfo) = 0;
};
應用系統通過IActiveScript介面控制腳本引擎的各種行為,也可以獲取引擎的各種狀態。通常,應用系統首先調用IActiveScript::SetScriptSite成員函數把自身實現的IActiveScriptSite介面傳遞給引擎,以後引擎就通過該介面與應用系統通訊。而應用系統也可以通過IActiveScript的其它成員函數獲取或者設置引擎的運行狀態。介面IActiveScriptParse用於對腳本代碼的操作,應用系統利用IActiveScriptParse介面裝入腳本代碼。
在介紹了應用系統和腳本引擎所實現的一些關鍵介面之後,我們再進一步看看應用系統和腳本引擎的協作過程:
(1)創建必要的受控對象,這些受控對象是指將要在腳本文件中引用到的Automation對象,通常是應用系統的文檔對象,也可以是某些ActiveX控制;
(2)創建引擎對象,不同的腳本語言使用不同的引擎對象,通常我們使用VBScript引擎或者JavaScript引擎,創建得到的介面指針是應用系統控制引擎的惟一途徑;
(3)裝入腳本文件,調用引擎的IActiveScriptParse介面的ParseScriptText成員函數把腳本代碼裝入到引擎中,注意ParseScriptText成員函數只接收UNICODE字元串,如果程序中用到了ANSI字元串,則需要進行轉換才能裝入到引擎中;
(4)加入名字項,凡是應用系統中要暴露給腳本文件的所有對象都需要加入到引擎的名字空間中,可以通過調用IActiveScript介面的AddNamedItem成員函數來完成;
(5)啟動引擎,以便運行腳本,直接調用IActiveScript::SetScriptState成員函數使其進入連接狀態(運行狀態)即可;
(6)引擎在執行腳本時,首先處理其名字空間中的名字項,調用應用系統IActiveScriptSite介面的GetItemInfo成員函數獲取每一個名字所對應的受控對象的信息,主要是COM介面;如果在腳本中有事件控制函數的話,則還要獲取受控對象的類型信息;
(7)在腳本執行過程中,當特定的事件發生時,引擎中的事件控制函數就要被調用;
(8)在腳本執行過程中,有可能會調用到受控對象的屬性和方法,則引擎會通過它所獲取的對象介面調用IDispatch::Invoke成員函數;
如果應用系統希望終止引擎的執行過程,可以調用IActiveScript::SetScriptState成員函數使其進入非運行狀態即可。
以上的步驟基本上反映了應用系統和引擎之間的協作過程。在實際使用過程中,可以根據情況的不同靈活應用。

『伍』 請啟動「對未標記為可安全執行腳本的ActiveX控制項初始化並執行腳本」安全設置,怎麼弄急!

請啟動「對未標記為可安全執行腳本的ActiveX控制項初始化並執行腳本」安全設置是設置錯誤造成的,解決方法為:

1、打開本地組策略編輯器程序窗口。

『陸』 對「對標記為可安全執行腳本的ActiveX控制項執行腳本」設置為「啟用」計算機有沒有安全風險呢

有的。一些腳本會利用漏洞入侵。但用電腦來上網,就有安全風險。

熱點內容
編程百分率 發布:2024-05-26 06:44:42 瀏覽:828
分卷壓縮包解壓不完整 發布:2024-05-26 06:28:03 瀏覽:529
a連接未訪問 發布:2024-05-26 06:04:25 瀏覽:268
安卓游戲都哪裡下載 發布:2024-05-26 06:04:07 瀏覽:598
浙江機械網路配置有哪些 發布:2024-05-26 05:50:23 瀏覽:394
郵政怎麼修改登錄密碼是什麼 發布:2024-05-26 05:41:00 瀏覽:279
window10無法訪問指定 發布:2024-05-26 05:35:56 瀏覽:469
如何修改鎖頭密碼 發布:2024-05-26 05:30:06 瀏覽:850
本機目前剩餘存儲空間是多少 發布:2024-05-26 05:30:05 瀏覽:812
qt寫數據存儲軟體 發布:2024-05-26 05:20:30 瀏覽:578