![](/img/trans.png)
[英]vbscript how do I import a function without that function running automatically?
[英]VBScript: How do I invoke a function which is defined with a vowel in the Dispatch Map
我有以下VBScript腳本,它創建一個Microsoft COM對象。
set foo = CreateObject("Bar.ProgId")
foo.Einfügen()
該COM對象的實現位於動態鏈接庫Foo.dll
,該文件使用Microsoft Foundation Framework(MFC),尤其是Dispatch Maps的機制。
Dispatch Maps顯示如下
BEGIN_DISPATCH_MAP(Foo, CCmdTarget)
[...]
DISP_FUNCTION(Foo, "Einfügen", Insert, VT_I2, VTS_NONE)
[...]
END_DISPATCH_MAP()
到現在為止還挺好。 當我在VBA環境中創建這樣的COM對象時,例如在Excel應用程序中, foo.Einfügen
的調用成功。 除了在VBScript-Script中。
我認識到OLE自動化應用於VBA以及VBScript。 但是當我運行VBScript-Script時,我收到了錯誤
錯誤:未知字符; 代碼8000A0408;
來源:在Microsoft VBScript中編譯失敗
首先我認為VBScript-Script中的編碼是錯誤的,因為字符ü
但我確認它是ANSI編碼的。 我還驗證了我系統上的Windows代碼頁是Windows-1252西方拉丁字符集。
如果我改變Einfügen
到Einfuegen
在調度地圖我斷言的VBScript腳本工作。
所以我的問題是,為什么調用foo.Einfügen
的行為在VBScript中與在VBA中不同? 這種行為的原因是什么?
對我來說,解決方法是在Dispatch Map中附加第二個DISP_FUNCTION
條目,將Einfuegen
分派給函數Insert
。 在VBScript-Script中,我調用foo.Einfuegen
,在VBA中仍然調用foo.Einfügen
。
命名約定。
與其兄弟VBA和VB6不同,它是VBScript中的語法錯誤。 VBScript編譯器需要表達式的單字節字符。
看一下:
您必須編寫包含括號括起來的不受支持的字符的表達式。
set foo = CreateObject("Bar.ProgId")
foo.[Einfügen]() 'this will work
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.