![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как использовать IGlobalInterfaceTable ? [WinXP]
SamProf © (2007-03-09 11:57:00)Доброго, мастера!
Столкнулся с проблемой, что нельзя из разных потоков использовать оле объект созданный в другом потоке. Перерыв пол инета нашёлЮ что удобнее всего ипользовать некоторый IGlobalInterfaceTable.
Но в силу не образованности не могу понять как его юзать! Может поможете?
Т.е. У меня в главном потоке примерно такой код
var
o:olevariant;
...............
o := createoleobject(name_o);
//вот тут както надо его зарегить в GIT
ну а в потоке его нужно както получить.....
SamProf (2007-03-09 12:57:00) [1]Это я уже читал.... делаю вот так:
var
ccc1:IDispatch;
C1: OleVariant;
// в главном:
CoInitializeEx(nil,COINIT_APARTMENTTHREADED);
ccc1 := createoleobject(c1name);
c1:=ccc1;
C1.initialize(c1.rmtrade, '/DD:\PROGRAM\DAKO\1с\', '');
AllocStdGit();
GitMarshal(idispatch,ccc1,cook);
// в потоке:
var
myccc1:IDispatch;
.......
CoInitializeEx(nil,COINIT_APARTMENTTHREADED);
GitUnmarshal(0,idispatch,myccc1);
тут усёрано myccc1 = nil...... :-(((((
Что я не так делаю....
S@shka (2007-03-09 12:34:00) [2]Это не поможет?
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1129985864&n=8