Help! Не получается. Не ловится метод глобального модуля. Вот код:
function TAddInObject.CallEventProcedure(ProcedureName: string): Integer;
var MethodID: Integer;
DispParams: TDispParams;
ExcepInfo: TExcepInfo;
Status: HResult;
VarResult, obj, t: Variant;
begin
CallEventProcedure := 1;
obj := OleVariant(pCurrentConnection).AppDispatch;
IDispatch(obj)._AddRef;
//t := obj.OnTimer;
MethodID := 0;
if IDispatch(obj).GetIDsOfNames(GUID_NULL, @ProcedureName, 1, LOCALE_USER_DEFAULT, @MethodID) = S_OK then
begin
DispParams.rgvarg:= nil;
DispParams.rgdispidNamedArgs := nil;
DispParams.cArgs := 0;
DispParams.cNamedArgs := 0;
t := obj.MethodFounded;
Status := IDispatch(obj).Invoke(MethodID, GUID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, DispParams, @VarResult, @ExcepInfo, nil);
if Status <> S_OK then
begin
DispatchInvokeError(Status, ExcepInfo);
end;
end
else
begin
t := obj.MethodNotFounded(OleVariant(ProcedureName), OLEVariant(MethodID));
end;
obj := Unassigned;
end;
Переменная pCurrentConnection - атрибут(член) класса TAddInObject, инициализируется следующим образом:
function TAddInObject.Init(pConnection: IDispatch): HResult; stdcall;
var iRes : Integer;
begin
...
pCurrentConnection := pConnection;
Init := S_OK;
end;
Этот код срабатывает следующим образом: вызывается CallEventProcedure c параметром "OnTimer", при этом отрабатывает вызов obj.MethodNotFounded (т.е. GetIDsOfNames не нашла метод), хотя напрямую obj.OnTimer срабатывает. Не могу понять, в чем дело?

P.S. OnTimer, MethodFounded, MethodNotFounded - процедуры глобального модуля, объявленные с признаком "Экспорт"
P.P.S. Сразу признаюсь - в Delphi я не силен, но вот пришлось самостоятельно заняться изысканиями