如果您想以任何COM(ic)語言編寫組件,並以任何COM(ic)語言使用它們 - 即使沒有註冊 - 然後使用Windows Script Components。
更新:
從您的評論
所以有時我分裂大腳本成更小的VBScript的,把 它們放入一個文件夾,並主腳本讀取一切 該文件夾並執行腳本中的內容。在主文件中有 是一個被稱爲「包含」的子文件(請參閱我的問題中的示例),以便我可以在 包含像C++的東西。問題是, 每次我這樣做,我必須寫在 主vbscript相同的「包括」子,所以我想知道如果我可以做一個activeX dll在VB6所以 ,我只能做到這一點:createobject(「等等.INCLUDE「)。包括 ‘文件路徑’...
我假設你的現實世界中的問題是通過在VBScript模塊/庫代碼複用。這可以在沒有MS ScriptControl,vb6和dll的開銷的情況下實現。
(1)使用類似
Dim gsLibDir : gsLibDir = "M:\lib\kurs0705\"
Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")
ExecuteGlobal goFS.OpenTextFile(gsLibDir & "BaseLib.vbs").ReadAll()
如果所有的可重複使用的代碼是在BaseLib.vbs(這將是,如果你沒有代碼分配到許多小文件夾中的剛爲了從那裏'讀取所有內容'的特權),你就完成了。 (2)如果您有一些專門的庫(數據庫,XML,MS Office自動化,Libre Office自動化,...),並且想根據您的main.vbs的任務 選擇該組合(a)中添加幾行像
ExecuteGlobal goFS.OpenTextFile(gsLibDir & "XmlLib.vbs").ReadAll()
或(b)把一個Sub include(suitableparms)
成BaseLib.vbs並調用它像
includeLibs Array( _
"§LibDir§ReLib.vbs" _
, "§LibDir§TxtManLib.vbs" _
, "§LibDir§ADOConst.vbs" _
, "§LibDir§ADOLib.vbs" _
, "§LibDir§WMILib.vbs" _
, "§LibDir§DNLib.vbs" _
, "§LibDir§XPLLib.vbs" _
)
當然,這樣的子應比
提供更多的功能
Sub Include(File)
ExecuteGlobal(CreateObject("SCRIPTING.FILESYSTEMOBJECT").OPENTEXTFILE("FILENAME & ".VBS", 1).READALL & vbNewLine)
End Sub
哪一個 - 引用&不考慮名稱錯誤 - 相當於(a)帶有額外的通話開銷。正如無用/臃腫是
sub includeFile (fSpec)
dim fileSys, file, fileData
set fileSys = createObject ("Scripting.FileSystemObject")
set file = fileSys.openTextFile (fSpec)
fileData = file.readAll()
file.close
executeGlobal fileData
set file = nothing
set fileSys = nothing
end sub
(參見here,爲thought進一步食物)
所以把一些努力的一個子include()
,在包含的文件有可能的語法錯誤交易的設計,可避免加載相同的模塊不止一次,並提供額外的有效載荷(搜索lib文件夾列表,保證卸載順序,執行初始化/清理等) - 或堅持(a)。 (3)如果要混合使用語言並使用COM的功能,請忘記ExecuteGlobal並使用.wsf和.wsc文件。如果你不知道關於XML的事情,並且......沒有關於wsc文件的經驗以及如何正確註冊它們,那麼你必須學習關於這些奇怪的野獸,最好是通過研究文檔。
Ekkehard.Horner,我不知道關於XML的一件事,我沒有經驗的wsc文件,以及如何正確註冊他們在一個64位筆記本電腦。你可以幫我嗎?我只想爲vbscript做一個小的「include(filepath)」函數,這樣我就可以包含其他腳本。提前致謝!我將用我想放入組件的腳本編輯我的問題。 – Tom