我的程序用到activex控件,怎样写程序,可以使他在没有这个activex控件的机器也能运行。 (50分)

  • 主题发起人 主题发起人 fu_qi_ming
  • 开始时间 开始时间
F

fu_qi_ming

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序用到activex控件,怎样写程序,可以使他在没有这个activex控件的机器也能运行
,就是如果所运行的机器上如果有这个activex控件,那么直接运行,如果没有这个activex控件
那么可以给个提示(说有些功能不能实现)。可以实现吗?([red]不发布这个activex控件[/red])
 
regsvr32 name.dll
 
连同ocw或dll文件一同发布,注册可使用安装程序或编程实现
 
楼上的意思都理解错了,[red]我不发布这个activex控件[/red],也要能运行。
 
没人遇到这个问题吗?activex控件包太大,功能又不是必须的,所以不一定要安装。
 
如果分不够可以另开帖加分。
 
这么长时间了.为什么还是没人.
 
写一个想法:动态创建引用ActiveX
try
//判断ActiveX的clsID在注册表中是否存在
//存在create ActiveX
//不存在屏蔽某些功能
except
//处理错误
end;
 
遇到同样问题,非常关注
 
不知怎样动态创建引用ActiveX
 
没有安装activex的机器上运行软件会出现错误异常吧?你把该异常捕获住应该就可以
 
在uses中应用对应的安装控件时生成的XXXX_TLB.pas文件。
例如:
引入MSCOMM控件,创建units会自动生成MSCommLib_TLB.pas
在程序中声明一个TMSComm,调用是create
var
testComm:TMSComm;
begin
try
testComm:=TMSComm.Create(self);
//MSComm调用程序
except
showmessage('控件连接错误!');
//禁用某些功能
end;
end;
也可在注册表直接判断clsID是否存在,相同的ActiveX的clsID在任何机器上都是相同的
位置在HKEY_CLASSES_ROOT->clsid->对应的clsID是否存在如果不存在直接禁用某些功能。
 
如果向上面那样动态创建的话,最后资源不能释放.
我是这样释放的
if assigned(testComm) then testComm.free;
 
在你的程序中用
winexec('command.com c/ regsvr32 完整的文件名.dll',sw_hide);
 
多人接受答案了。
 
后退
顶部