Здравствуйте, Tom, Вы писали:
Tom>Здравствуйте, Eugene Sh, Вы писали:
ES>>У меня такая проблема. ES>>Есть COM`овская dll`ка, написанная на C++. Внутри dll`ки вызывается CoInitializeEx(NULL, COINIT_MULTITHREADED) — там необходимо использовать многопоточную модель. ES>>При вызове методов dll`ки из приложения, написанного на C++, всё нормально. А при вызове из приложения, написанного на VB, CoInitializeEx возвращает ошибку RPC_E_CHANGED_MODE — "cannot change thread mode after it is set". ES>>Вызов делается так: ES>>Dim a As Object ES>>Set a = CreateObject("XXX.XXX") ES>>a.TestCoInitEx
ES>>Кто-нибудь сталкивался с этим? Как вызвать из VB методы многопоточной COM`овской dll`ки? Tom>Проблемма возникает из за того, что VB уже инициализировал аппартамент как STA. Вызывать обьекты, находящиеся в MTA нужно так же как и те, которые в STA. т.е просто вызывать их, но не забыть их правильно зарегистрировать.
Sorry за непонятливость, но что значит "просто вызывать их, но не забыть их правильно зарегистрировать"?