我使用的是VS 2008和
Windows 7.
得到一个.NET C#类,它作为COM对象公开.
得到一个.NET C#类,它作为COM对象公开.
[Guid("E5014B85-FCB2-4F0D-95EC-F741395A7923")] [InterfaceType(ComInterfaceType.InterfaceIsDual)] public interface DSystem { [DispId(1610809354)] void setProperties(IDictionary propertymap); }
从VBScript调用COM对象
dim dSystem set dSystem = CreateObject("MYCOMOBJECT") Dim objDictionary Set objDictionary = CreateObject("System.Collections.Hashtable") objDictionary.Add "PROP1","abc" objDictionary.Add "PROP2","zyx" dSystem.setProperties(objDictionary)
一切都很好……但是,
返回类型从void更改为bool
[DispId(1610809354)] bool setProperties(IDictionary propertymap);
和
success = dSystem.setProperties(objDictionary)
导致错误
Microsoft VBScript runtime error ‘800a0005’
Invalid procedure call or argument
.tlb文件似乎没问题
[id(0x6003000a)] HRESULT setProperties( [in] IDictionary* propertymap,[out,retval] VARIANT_BOOL* pRetVal);
我究竟做错了什么?
任何人都能给我一个暗示吗?