Alex_2005 писал(а):Получается, невозможно сделать стабильную ActiveX exe!
Alex_2005 писал(а):Привет всем!! У меня проблемма: есть ActiveX exe. ActiveX exe стартуется при помощи другой программы. Если стартовать третью программу, которая тоже использует ActiveX exe, то проверяется ROTHook таблица. Если тав внесены данные об ActiveX exe, то программа использует уже запущенный ActiveX exe. Если нет, то создаёт новый ActiveX exe. Проблемма в том, что если я хочу закрыть ActiveX exe, то СlassTerminate не происходит,т.к. имеются поинтеры на ActiveX exe. Как завершить работу ActiveX exe даже если другие программы имеют поинтер на ActiveX exe?
Alex_2005 писал(а):просто так, к слову: RotHook предложил как решение использования уже запущеной ActiveX.exe один из разработчиков Microsoft.
ANDLL писал(а):Alex_2005 завершайся эндом. Никакого BSOD'а не должно быть, по крайней мере у меня не было. Просто появляется RT Error 'Server terminated' ил что-то типа того. А этот RT Error можно отловить...
А если серьезно, то надо просто оповещать все объекты, которые имеют ссылку на объекы этого EXE о необходимости удаления этих ссылок.
Vi писал(а):Ну а почему не написать стоп-клиента, который обращался бы к ROT за существующим объектом (а он ведь существует, правда?) и вызывал некий метод, который завершал бы работу этого объекта. А чтобы отсоединиться от разных зависших клиентов (в частности и от самого вызывающего стоп-клиента), существует функция COM - CoDisconnectObject, которую должен вызвать сам объект непосредственно.
Нужно ещё и из ROT ссылку на себя удалить, но, я думаю, что ROTHook-er это делает.
Alex_2005 писал(а):Vi писал(а):Ну а почему не написать стоп-клиента, который обращался бы к ROT за существующим объектом (а он ведь существует, правда?) и вызывал некий метод, который завершал бы работу этого объекта. А чтобы отсоединиться от разных зависших клиентов (в частности и от самого вызывающего стоп-клиента), существует функция COM - CoDisconnectObject, которую должен вызвать сам объект непосредственно.
Нужно ещё и из ROT ссылку на себя удалить, но, я думаю, что ROTHook-er это делает.
как использовать эту функцию??? в инете не нашёл подробную инфу. Кроме того хотел спросить существаует ли она в Win98 , NT, 2000.
Alex_2005 писал(а):ANDLL писал(а):Alex_2005 завершайся эндом. Никакого BSOD'а не должно быть, по крайней мере у меня не было. Просто появляется RT Error 'Server terminated' ил что-то типа того. А этот RT Error можно отловить...
А если серьезно, то надо просто оповещать все объекты, которые имеют ссылку на объекы этого EXE о необходимости удаления этих ссылок.
кстати, как отловить эту ошибку и не допустить появление сообщения об ошибке?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 108