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.