Как зарегистрировать в компонент ActiveX? |
Previous Top Next |
запустить "Regsvr32.exe имя_файла" из каталога c:\windows\system(32)
©Drkb::04345
Автор: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Взято с Vingrad.ru http://forum.vingrad.ru
1. Регистрация ActiveX:
Code: |
function RegActiveX(FileName:string):HRESULT; var hMod:Integer; RegProc:function:HRESULT; //HRESULT = Longint begin hMod:=LoadLibrary(FileName); if hMod=0 then raise Exception.Create('Unable to load library"'+FileName+'". GetLastError = '+IntToStr(GetLastError)); RegProc:=GetProcAddress(hMod,'DllRegisterServer'); if RegProc=nil then raise Exception.Create('Unable to load "DllRegisterServer" function from "'+FileName+'". GetLastError = '+IntToStr(GetLastError)); Result:=RegProc; end; |
©Drkb::04346
2. Регистрация Type Library:
Code: |
procedure RegisterTypeLibrary(FileName:string); var Name: WideString; HelpPath: WideString; TypeLib: ITypeLib; begin if LoadTypeLib(PWideChar(WideString(FileName)), TypeLib)=S_OK then begin Name := FileName; HelpPath := ExtractFilePath(ModuleName); RegisterTypeLib(TypeLib, PWideChar(Name), PWideChar(HelpPath)); end; end; |
Здесь используется интерфейс ITypeLib и API функция RegisterTypeLib. И то и другое объявленно в модуле ActiveX, если я не ошибаюсь.
Hint: если вы регистрируете библиотеку типов изнутри модулчя, то его имя можно получить с помощью следующей функции:
Code: |
function GetModuleFileName: string; var Buffer: array[0..261] of Char; begin SetString(Result, Buffer, Windows.GetModuleFileName(HInstance, Buffer, SizeOf(Buffer))); end; |
©Drkb::04347
Автор: Fantasist
Взято с Vingrad.ru http://forum.vingrad.ru