Здравствуйте, Аноним, Вы писали:
GS>>ASP — он, в сущности, VBScript (ну, или Jscript). Все данные там — VARIANT. Внутри кода COM-сервера ты должен завпаковывать данные в VARIANT и распаковывать их оттуда.
А>легко сказать а хоть примерчик? ПлЗ
Но компилировать и проверять мне лень. Примерно так:
ASP:
set o = CreateObject("<твой ProgId>")
o.SendString("STRING")
s = o.ReceiveString
o.SendLong(1234567)
l = o.ReceiveLong
o.SendObject(o)
set o2 = o.ReceiveObject
IDL выглядит так:
[id(1)] HRESULT SendString([in] VARIANT v);
[id(2)] HRESULT ReceiveString([out, retval] VARIANT *pv);
.. и все методы имеют такую сигнатуру, т.е. через VARIANT.
С++:
STDMETHODIMP CCoClass::SendString(VARIANT v)
{
if (v.vt == VT_BSTR) {
CComBSTR s = v.bstr;
// делаешь со строкой что надо
} else {
// ...
}
return S_OK;
}
STDMETHODIMP CCoClass::ReceiveString(VARIANT *pv)
{
CComVariant v;
v = CcomVariant("твоя строка");
v.Detach(*pv);
return S_OK;
}