Проблема с агрегацией объекта Word.Application
От: kotanas Россия  
Дата: 29.09.04 15:54
Оценка:
Здравствуйте,

Есть задача — контролировать процесс загрузки и сохранения файлов MS Word (надо модифицировать пути к загружаемым/сохраняемым файлам). Насколько удалось понять это можно было бы решить путем агрегации объекта Word.Application в свой com объект с реализацией интерфейса IMarshal в своем объекте. Однако при попытке создания Word.Application, CoCreateInstance возвращает E_NOAGGREGATION. Действительно офисные объекты не поддерживают агрегацию или я что-то делаю не так?

Буду очень благодарен за всякие мысли по поводу того как это можно реализовать.

С уважением,
Вячеслав
Re: Проблема с агрегацией объекта Word.Application
От: john_silver  
Дата: 30.09.04 08:42
Оценка:
Здравствуйте, kotanas, Вы писали:

K>Здравствуйте,


K>Есть задача — контролировать процесс загрузки и сохранения файлов MS Word (надо модифицировать пути к загружаемым/сохраняемым файлам). Насколько удалось понять это можно было бы решить путем агрегации объекта Word.Application в свой com объект с реализацией интерфейса IMarshal в своем объекте. Однако при попытке создания Word.Application, CoCreateInstance возвращает E_NOAGGREGATION. Действительно офисные объекты не поддерживают агрегацию или я что-то делаю не так?


K>Буду очень благодарен за всякие мысли по поводу того как это можно реализовать.


K>С уважением,

K>Вячеслав

При создании агрегируемого объекта CoCreateInstance надо запрашивать обязательно интерфейс IUnknown.
У вас это так?
Re[2]: Проблема с агрегацией объекта Word.Application
От: kotanas Россия  
Дата: 30.09.04 09:08
Оценка:
Здравствуйте, john_silver, Вы писали:

_>Здравствуйте, kotanas, Вы писали:


K>>Здравствуйте,


K>>Есть задача — контролировать процесс загрузки и сохранения файлов MS Word (надо модифицировать пути к загружаемым/сохраняемым файлам). Насколько удалось понять это можно было бы решить путем агрегации объекта Word.Application в свой com объект с реализацией интерфейса IMarshal в своем объекте. Однако при попытке создания Word.Application, CoCreateInstance возвращает E_NOAGGREGATION. Действительно офисные объекты не поддерживают агрегацию или я что-то делаю не так?


K>>Буду очень благодарен за всякие мысли по поводу того как это можно реализовать.


K>>С уважением,

K>>Вячеслав

_>При создании агрегируемого объекта CoCreateInstance надо запрашивать обязательно интерфейс IUnknown.

_>У вас это так?

Да. вот такой код:

HRESULT hr = CLSIDFromProgID(L"Word.Application", &clsid);
//...
hr = CoCreateInstance(clsid, this, CLSCTX_LOCAL_SERVER, IID_IUnknown, (void **)&m_pWordUnknown);
Re[3]: Проблема с агрегацией объекта Word.Application
От: john_silver  
Дата: 01.10.04 07:26
Оценка:
Здравствуйте, kotanas, Вы писали:

K>Да. вот такой код:


K>HRESULT hr = CLSIDFromProgID(L"Word.Application", &clsid);

K>//...
K>hr = CoCreateInstance(clsid, this, CLSCTX_LOCAL_SERVER, IID_IUnknown, (void **)&m_pWordUnknown);

А, блин, так это же EXE!
Естественно, никакой агрегации.

"Aggregation is currently not supported cross-process or cross-machine."
Re: Проблема с агрегацией объекта Word.Application
От: TK Лес кывт.рф
Дата: 01.10.04 09:46
Оценка:
Здравствуйте, kotanas, Вы писали:

K>Есть задача — контролировать процесс загрузки и сохранения файлов MS Word (надо модифицировать пути к загружаемым/сохраняемым файлам). Насколько удалось понять это можно было бы решить путем агрегации объекта Word.Application в свой com объект с реализацией интерфейса IMarshal в своем объекте. Однако при попытке создания Word.Application, CoCreateInstance возвращает E_NOAGGREGATION. Действительно офисные объекты не поддерживают агрегацию или я что-то делаю не так?


K>Буду очень благодарен за всякие мысли по поводу того как это можно реализовать.


Для контролирования процесса загрузки файлов можно попробовать посмотреть на интерфейс IPersistMoniker
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.