Ich habe ein C++ COM-DLL-Projekt und die folgende Funktion funktioniert einwandfrei, wenn sie von ihrem COM-Objekt in einer VB-Skriptdatei aufgerufen wird.WScript.CreateObject gibt beim Aufrufen einer C++ COM-DLL-Funktion leer
[id(1)] HRESULT ShowMessage([in] BSTR sMessage, BSTR sTitle); //<< .IDL File
STDMETHOD(ShowMessage)(BSTR sMessage, BSTR sTitle); //<< Header File
STDMETHODIMP CFoo::ShowMessage(BSTR sMessage, BSTR sTitle) //<< C++ Source File
{
MessageBox(0, CString(sMessage), CString(sTitle), 0);
return S_OK;
}
Above Funktion funktioniert gut, wenn ich es von VB Script wie folgt aufrufen:
Dim Test: Set Test = WScript.CreateObject("VbsEvents.dll")
Test.ShowMessage "Hello World!", "Windows Script Host"
jedoch Wenn ich Funktion deklarieren wie unten:
[id(2)] HRESULT Add([in] int Value1, int Value2, [out] int *ReturnValue); //<< .IDL File
STDMETHOD(Add)(int Value1, int Value2, int *ReturnValue); //<< Header File
STDMETHODIMP CFoo::Add(int Value1, int Value2, int *ReturnValue) //<< C++ Source File
{
*ReturnValue = Value1 + Value2;
return S_OK;
}
und nennen es von VB Script wie:
Dim Return: Test.Add 1, 2, CInt(Return)
WScript.Echo CStr(Return)
Ich behalte es wird nichts gechattet und ich erwarte, dass dies als Ergebnis 3 widerhallt. Ich kann nicht herausfinden, warum diese Funktion in VB Script nicht funktioniert.
Jede Hilfe wird geschätzt, um herauszufinden, was der Grund dafür ist, dass dieser VB Script Code nichts widergibt.
Warum '[out]' wird nicht mit VB Script zu arbeiten? Ich habe sogar 'Dim Return: Return = Test.Add 1, 2, CInt (" ")' und 'WScript.Echo CStr (Return)' versucht. Das echot gar nichts! :-( – Blueeyes789
Kann VB Script keine Ausgabewerte von COM Funktionen erhalten? – Blueeyes789