谢谢!我已经实现了注册,代码如下:
function InstallOcx( const sFileName: AnsiString; bSetup: boolean): boolean;
var
hOcx: THandle;
funcRegister: TDllRegisterServer;
funcUnRegister: TDllUnRegisterServer;
begin
Result := False;
// 检查文件是否存在
if not FileExists(sFileName) then
Raise EOleError.CreateFmt('File not found %s', [sFileName]);
// 载入 OCX
hOcx := LoadLibrary(pchar(sFileName));
if hOcx < 32 then
Raise EOleError.CreateFmt('无法载入 %s', [sFileName]);
try
// 查 DllRegisterServer Call address
if bSetup then
begin
funcRegister := GetProcAddress(hOcx, 'DllRegisterServer');
if @funcRegister = nil then
Raise EOleError.CreateFmt('无法载入 %s い? DllRegisterServer',
[sFileName]);
// 执行 DllRegisterServer, 并与正常值比较
Result := funcRegister = S_OK;
end
else
begin
funcUnRegister := GetProcAddress(hOcx, 'DllUnregisterServer');
if @funcUnRegister = nil then
Raise EOleError.CreateFmt('无法载入 %s 的 DllUnregisterServer',
[sFileName]);
// 执行,并与正常值比较
Result := funcUnRegister = S_OK;
end;
//若执行失败,提示.
if not Result then
begin
if bSetup then
Raise EOleError.CreateFmt('无法登录注册 %s', [sFileName])
else
Raise EOleError.CreateFmt('无法取消注册 %s', [sFileName]);
end;
finally
FreeLibrary(hOcx);
end;
end;
注:
1。所需的dll为:
nmocod.dll nmorenu.dll nmsckn.dll nmw3vmv.dll
2.b_Setup 为true,注册Ocx
为False,清除注册信息