Uso VS 2008 y Windows 7.
Obtuve una clase .NET C# que se expone como objeto COM.llamando al objeto .NET COM de VBScript
[Guid("E5014B85-FCB2-4F0D-95EC-F741395A7923")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface DSystem
{
[DispId(1610809354)]
void setProperties(IDictionary propertymap);
}
objeto COM se llama desde un VBScript
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)
Todo funciona bien ... pero, un cambio de tipo de retorno de void
a bool
[DispId(1610809354)]
bool setProperties(IDictionary propertymap);
y
success = dSystem.setProperties(objDictionary)
provoca un error
error de ejecución de Microsoft VBScript '800a0005'
no válida llamada a procedimiento o argumento
El archivo .tlb parece estar bien
[id(0x6003000a)]
HRESULT setProperties(
[in] IDictionary* propertymap,
[out, retval] VARIANT_BOOL* pRetVal);
¿Qué estoy haciendo mal?
¿Alguien puede darme una pista?
Esta pregunta de novato está bien hecha. – sharptooth