СОМ-объект-без-регистрации-в-реестре с помощью Delphi

Все особенности программирования под платформу Wintel
Ответить
Philipp
Сообщения:2
Зарегистрирован:15 ноя 2016, 23:27

16 ноя 2016, 18:26

Узнал о возможности создавать COM-объекты без регистрации в реестре.
http://forum.developing.ru/showthread.p ... -в-реестре

Пытаюсь то же самое организовать в Delphi, однако возникает ошибка Access violation. Не могу понять в чем дело. Версия Delphi XE2. Вот код:

Код: Выделить всё

type
   TDllGetClassObject = function(const CLSID, IID: TGUID; var Obj): HResult; stdcall;

var
   hndl: THandle;
   dll_name: String;
   p: pointer;
   DllGetClassObject: TDllGetClassObject;
   factory: IClassFactory;
   V: LongWord;
begin

  dll_name:= 'MYSHELL.DLL';//

  try
    hndl:=LoadLibrary(PChar(dll_name));
    if hndl=0 then
    begin
      ShowMessage(PChar('Не могу загрузить DLL '+dll_name+'!') );
    end
    else
    begin
      ShowMessage('Dll загружена!');

      //инстанцируем
      DllGetClassObject := GetProcAddress(hndl,'DllGetClassObject');
      if not Assigned(DllGetClassObject) then
        showMessage('Not assigned dll!')
      else
      begin
        OleCheck(DllGetClassObject(MY_CLSID,IID_IClassFactory,factory));

        //ClassFactory.CreateInstance(nil,IID_IDispatch, ...);

//...

      end;
    end;
  finally
    FreeLibrary(hndl);//здесь возникает ошибка Access violation
  end;





end;

end.
Ответить