Может быть, не сразу смогу внятно объяснить т.к. тема для меня новая и я в боевом режиме изучаю использование интерфейсов. Проблема в следующем: накатал dll, которая поставляет нужный мне интерфейс. В нем осуществляется вызов обычной VCL-формы. В стороннем приложении вызов моего интерфейса производится по CreateObject("bla-bla"). Затем вызов метода интерфейса приводит к созданию формы (немодальной), осуществляющей некоторые действия, и которая может некоторое время висеть сама по себе. Но проблема в том, что вызывающее приложение может завершиться, пока моя форма присутствует. В этом случае вываливается AV, впрочем, понятно почему. Непонятно, как с этим бороться? т.к. я еще не слишком глубоко постиг механизм всей этой кухни...
P.S. Мой интерфейс — наследник от IDispatch, инкапсулируется классом так:
IControlWindow = interface(IDispatch)
['{67642A6A-7E5E-41E2-A2E3-ECF9D03503C0}']
procedure ShowControlWindow(iType: Integer; iIndex: Integer); safecall;
end;
IControlWindowDisp = dispinterface
['{67642A6A-7E5E-41E2-A2E3-ECF9D03503C0}']
procedure ShowControlWindow(iType: Integer; iIndex: Integer); dispid 201;
end;
TControlWindow = class(TAutoObject, IControlWindow)
procedure ShowControlWindow(iType: Integer; iIndex: Integer); safecall;
end;
Что, где проверить\отловить надо, чтобы успеть уничтожить форму в момент завершения вызывающего приложения?