使用regserver会出现一个DOS窗口,显得很不雅,还是最好使用下面的函数(经过测试,没有问题),思想是调用Com DLL中的DllRegisterServer函数来完成自注册。 function RegisterDll(strDllPath : string) : boolean; var hLib : THandle; lpFunc : TDllProcedure; strName : string; begin strName := strDllPath; hLib := LoadLibraryEx(pChar(strName), 0,LOAD_WITH_ALTERED_SEARCH_PATH); if hLib = 0 then begin result := false; exit; end; try lpFunc := GetProcAddress( hLib, 'DllRegisterServer' ); if not Assigned(lpFunc) then begin result := false; exit; end; lpFunc; result := true; finally FreeLibrary( hLib ); end; end;
使用regserver会出现一个DOS窗口,显得很不雅,还是最好使用下面的函数(经过测试,没有问题),思想是调用Com DLL中的DllRegisterServer函数来完成自注册。
function RegisterDll(strDllPath : string) : boolean;
var
hLib : THandle;
lpFunc : TDllProcedure;
strName : string;
begin
strName := strDllPath; hLib := LoadLibraryEx(pChar(strName), 0,LOAD_WITH_ALTERED_SEARCH_PATH);
if hLib = 0 then
begin
result := false;
exit;
end; try
lpFunc := GetProcAddress( hLib, 'DllRegisterServer' );
if not Assigned(lpFunc) then
begin
result := false;
exit;
end; lpFunc;
result := true;
finally
FreeLibrary( hLib );
end;
end;