俺建个工程 1又搞了个 activex 控件的工程 加进去所以就有了个工程组了 vbg 文件但我发现不能 发布就又将 控件工程 发布 默认就是 ocx 文件我又在原工程1中 将这个 ocx 作为部件加进来 于是 我发布 工程1本机是正常的我将生成的exe复制到其他电脑上点击运行 无反应 也没有 错误提示 只是鼠标闪了下用package 发布 再安装 还是没用 用wise 没用用setup factory 没用索性在此机上 安装vb6 打开工程文件 vbp重新 发布 有用发到 原来电脑 没用安装包 没用 去掉 ocx 和 引用它的 窗体 有用 请问各位大虾 帮帮俺吧

热心网友

你的控件没有在用户机器上注册! 使用ActiveX控件可快速实现小型的组件重用、代码共享,从而提高编程效率,降低开发成本。但是ActiveX控件对于最终用户并不能直接使用,因为ActiveX控件必须先在Windows中注册。注册ActiveX控件一般来说有六种途径,它们有各自的优点,运用范围也不同。  Regsvr32。exe注册   Regsvr32。exe位于Windows目录的system子目录下。点击Windows的“开始→运行”菜单,在对话框中输入以下命令:  regsvr32 netshare。ocx &&注册netshare。ocx控件  regsvr32 /u netshare。ocx &&解除netshare。ocx控件的注册  如果netshare。ocx文件不在system目录时,还必须在文件名前加上完整的路径。除了regsvr32应用程序之外,Microsoft在它的Web站点上还提供了一个称为regclean。exe的程序,可以检查注册表并去掉丢失的组件在注册表中的条目。regclean。exe除了可以删除“悬挂”的条目,它还提供一个“undo”文件帮助恢复错误的删除。  卧龙传说提醒:用regsvr32。exe注册ActiveX控件虽然简单,但需要用户手工进行注册,在不用时还需手工解除注册。  VFP环境注册  在我们进行程序设计时,VFP本身提供一个注册ActiveX控件的方法。  进入VFP环境,选择“工具→选项”菜单,点击“控件”页,选中“ActiveX控件”单选按钮,在列表框里显示所有已经注册的ActiveX控件,这时,点击右边的“添加”按钮,选择需要注册的ActiveX控件文件,“确定”后完成注册。也可以在表单设计器的表单控件工具栏里拖动“OLE”按钮到表单,在弹出的选择框里选中“插入控件”单选钮,同样点击右边的“添加控件”按钮,来完成新控件的注册。  卧龙传说提醒:本方法仅适合程序员在设计程序过程中手工进行,对用户而言,并没有实现在本地机上自动注册。  安装程序注册  大型应用软件一般都有一个安装程序,在安装程序中解决ActiveX控件的注册是较为理想的一种方案。  在用户执行安装程序时,这些ActiveX控件将自动在用户机器上安装并注册。  VFP7。0光盘所带的InstallShield是目前较为流行的制作安装程序的工具,使用它可以制作出专业级的Setup安装程序,还可以注册应用程序使用到的ActiveX控件。而且,在以后使用控制面板的“添加/删除程序”卸载该软件时,安装程序会自动注销掉以前注册的ActiveX控件。  加入代码注册  首先,定义一个注册控件的函数:  Function MyRegsvr ( lpcRegFilename, lplIsreg )  If File(lpcRegFilename)  lpcRegFilename = iif(llisreg, lpcRegFilename, [ /u ] + lpcRegFilename)  Run /n regsvr32 &&lpcRegFilename  Endif  Return  Endfunc  然后就可以通过以下语句来调用该函数,并完成ActiveX控件的注册了(卧龙传说提醒:一定要注意控件文件的路径哦)。  = MyRegsvr( "netshare。ocx", 。T。) &&注册netshare。ocx控件  = MyRegsvr( "netshare。ocx", 。F。) &&解除netshare。ocx控件的注册  注册函数注册  上面提到运行regsvr32。exe应用程序将弹出注册是否成功的对话框,注意看内容“DllRegisterServer in netshare。ocx succeeded”或“UnDllregisterServer。。。”,其实,通常每个可用的ActiveX控件都有DllRegisterServer、UnDllregisterServer这两个自注册函数包含在其中,我们可以用定义API函数的方法(Declare in 。。。 )来定义它,然后直接使用该函数来进行注册和反注册。  同样,我们先自定义一个注册函数(卧龙传说提醒:请注意DllRegisterServer、UnDllregisterServer的大小写):  Function DllRegister (lpLibFileName,isReg)  isReg = iif(type("isReg")="U", 。T。, isReg)  lpProcName = iif(isReg, "DllRegisterServer", "DllUnregisterServer" )  Declare INTEGER (lpProcName) in (lpLibFileName)  return &&lpProcName。()  Endfunc  然后,就可以通过该函数来完成ActiveX控件的注册了。  = DllRegister( "netshare。ocx", 。T。) &&注册,返回0表示成功  = DllRegister( "netshare。ocx", 。F。) &&注销,返回0表示成功  Clear Dlls  试试,是不是没有了弹出框的烦恼!  卧龙传说提醒:该方法没有对ActiveX控件文件的验证,假如该控件没有有效的DllRegisterServer功能(即不具有自注册功能),也就找不到以上的两个API函数,照样会有错误信息弹出。  API函数注册  此方法的设计思路是:先将ActiveX控件载入内存,然后验证其有效性,最后直接在内存地址中执行其注册函数(DllRegisterServer、UnDllregisterServer)。其编程方法是:  1、使用Windows API函数LoadLibrary载入ActiveX控件;  2、使用GetProcAddress函数获取ActiveX控件中注册函数DllRegisterServer(注销函数为DllUnregisterserver)指针;  3、使用CallWindowProc函数执行已载入内存的ActiveX控件注册函数(DllRegisterServer、UnDllregisterServer)。  上面所述的ActiveX控件注册方法各有特点。经实际使用,效果良好。您可根据实际情况灵活选用。 。