簡體   English   中英

VBScript:如何調用在Dispatch Map中用元音定義的函數

[英]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ügenEinfuegen在調度地圖我斷言的VBScript腳本工作。

所以我的問題是,為什么調用foo.Einfügen的行為在VBScript中與在VBA中不同? 這種行為的原因是什么?

對我來說,解決方法是在Dispatch Map中附加第二個DISP_FUNCTION條目,將Einfuegen分派給函數Insert 在VBScript-Script中,我調用foo.Einfuegen ,在VBA中仍然調用foo.Einfügen

命名約定。
與其兄弟VBA和VB6不同,它是VBScript中的語法錯誤。 VBScript編譯器需要表達式的單字節字符。

看一下:

語法錯誤(VBScript)

無效字符(VBScript)

您必須編寫包含括號括起來的不受支持的字符的表達式。

set foo = CreateObject("Bar.ProgId")
foo.[Einfügen]() 'this will work

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM