Мне нужно установить свойства COM-объекта.
COM-объект имеет функцию Set
, которая принимает ключ (строку) и значение (вариант) в качестве параметров.Например, я могу сделать: com_object->Set("name", "John")
.
У меня есть много свойств, чтобы установить, но я не знаю, как это сделать в C ++.В VB.Net это выглядело бы так: com_object.Set "name,age", Array("M2", 1)
Я хотел бы сделать то же самое в C ++, но я не знаю синтаксис.
РЕДАКТИРОВАТЬ
Вот код, который я написал для доступа к свойствам в пакете:
template < class ComObjectType >
void read(ComObjectType com_object, std::string const& fields)
{
COleSafeArray data_array_;
data_array_ = com_object->GetGet((LPCSTR)fields.c_str());
long index = 0;
VARIANT value_temp_;
_variant_t value_reader_;
data_array_.GetElement(&index, &value_temp_);
value_reader_.Attach(value_temp_);
std::string str1 = (LPCSTR)((_bstr_t) value_reader_)
++index
data_array_.GetElement(&index, &value_temp_);
value_reader_.Attach(value_temp_);
long long1 = value_reader_.lVal;
}
Затем я вызываю эту функцию (которая на самом деле мало что делает, а просто предназначена для демонстрации. IAPIOrderObj* может быть любым, но он определен в файле .tlh API, который мне предоставляется, и он наследуется от интерфейса IDispatch.
MYAPI::IAPIOrderObj* my_obj;
read< IAPIOrderObj* >(my_obj, "StatusString,StatusCode");