使用HTML控件后的安装问题(100分)

  • 主题发起人 主题发起人 Johnney
  • 开始时间 开始时间
J

Johnney

Unregistered / Unconfirmed
GUEST, unregistred user!

我在程序中使用了HTML控件(internet页),打包后发现在没有Delphi环境的机子上运行不了,错误信息:“EOleSysError 类没有注册“
怎么办?
最后关头出现了这种问题,真没想到,望各位同仁救急!

Thanks very much!

johnnylee@263.net
 
Internet页的HTML控件是一个OCX,在没有Delphi环境下需要对其注册才能使用。
你可以在Windows/System目录下找到html.ocx,它还需要几个DLL,你可以用
VC的Tools下的Depends进行分析需要哪些DLL文件,将他们(包括html.ocx)
拷出来后打包进去,安装时进行注册就可以了。
好象在一台干净的机器上需要msvcrt40.dll, nmocod.dll, nmordeu.dll,
nmorenu.dll, nmsckn.dll, nmw3vwn.dll才能注册成功。你可以自己用Depends
分析分析到底需要哪些文件。
Good Luck!
 
谢谢!我已经实现了注册,代码如下:
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,清除注册信息
 
接受答案了.
 
后退
顶部