OCX注册与卸载的问题

urmy1004 2011-02-25 10:43:56
我自制了一个控件 比如叫 A.ocx
复制了几份到别的文件夹,之后我分别注册了一下,在VB6 的IDE里面使用 组件 分别导入了一下,所以组件栏里面有几个同样的名称的组件。。。。

之后无论我怎么regsvr32 /u xx.ocx 还有删除该OCX,都无法使得IDE组件列表的该控件只有一份

比如有多个同名 MSChart 的组件
...全文
289 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
无·法 2011-02-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jiashie 的回复:]
sCmd=sCmd & "&& @echo 正在结束所有调用" & sFile & "的进程... "
sCmd=sCmd & "&& taskkill /f /fi " & chr(34) & "MODULES EQ " & sName & chr(34) & " /im * "
[/Quote]没想到还有通过dll名称结束相关调用的进程,学习了
urmy1004 2011-02-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dbcontrols 的回复:]

将下面的文本粘贴到文本编辑器中,然后存为以.reg为扩展名的文件。双击后将信息添加到注册表中。然后用鼠标右键点击一个动态链接库或OCX控件,在弹出的环境菜单中你将会看到Register和Unregister的选项。运用这个方法的前提是你的计算机上必须有regsvr32.exe文件。
REGEDIT4
[HKEY_CLASSES_ROOT\.ocx]
@="ocxfile"
[HKEY_C……
[/Quote]
不错不错~~ 受教了~~~
谢谢您啦!!
urmy1004 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sysdzw 的回复:]

regsvr32 有时卸载不干净。vb那个里面也是从注册表里读取的,搜索下注册表删除掉所有残留信息吧。搜索方法就是输入你的控件名,例如xx。
建议用regworkshop,搜索速度极快。
[/Quote]
没想到注册表 o(╯□╰)o
嘿嘿,好提议~~ 谢谢啦,我试试啊~~
urmy1004 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 king06 的回复:]

工程-->部件 将不要的去掉
[/Quote]

恩~~但是再次启动使用这个控件的工程的时候会出错,也许我发布控件的时候也不规范,有时我直接make,有时我使用向导 。。。 但是控件的目录都是固定的文件夹

晚上再试试,谢谢兄台啦
urmy1004 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 veron_04 的回复:]

使用这个:
http://download.csdn.net/source/1627047
[/Quote]

谢谢啦~~~ 我试试看,老板找谈话谈到现在 - -!
jiashie 2011-02-25
  • 打赏
  • 举报
回复
学习了。
奉献上我常用的注册与卸载dll的两个vbs文件

'regDll.vbs
on error resume next
sFile=Wscript.arguments(0)
if sfile="" then wscript.quit
set objShell=CreateObject("WScript.Shell")
objShell.Run "regsvr32 " & chr(34) & sFile & chr(34)
set objShell=nothing


'DeleteDll.vbs
on error resume next
sFile=wscript.arguments(0)
if sFile="" then wscript.quit
ext=mid(sfile,instrrev(sfile,".")+1)
'if lcase(ext) <> "dll" then wscript.quit
sName=mid(sFile,instrRev(sfile,"\")+1)
set objShell=createObject("Wscript.Shell")
sCmd="%comspec% /k COLOR 1A "
sCmd=sCmd & "&& @echo 正在结束所有调用" & sFile & "的进程... "
sCmd=sCmd & "&& taskkill /f /fi " & chr(34) & "MODULES EQ " & sName & chr(34) & " /im * "
sCmd=sCmd & "&& @echo 正在反注册" & sFile & " "
sCmd=sCmd & "&& regsvr32 /u " & chr(34) & sFile & chr(34) & " "
sCmd=sCmd & "&& del /p " & chr(34) & sFile & chr(34) & " "
sCmd=sCmd & "&& pause "
sCmd=sCmd& "&& exit"
objshell.run sCmd
set objShell=nothing

无·法 2011-02-25
  • 打赏
  • 举报
回复
regsvr32 有时卸载不干净。vb那个里面也是从注册表里读取的,搜索下注册表删除掉所有残留信息吧。搜索方法就是输入你的控件名,例如xx。
建议用regworkshop,搜索速度极快。
king06 2011-02-25
  • 打赏
  • 举报
回复
工程-->部件 将不要的去掉
贝隆 2011-02-25
  • 打赏
  • 举报
回复
dbcontrols 2011-02-25
  • 打赏
  • 举报
回复
将下面的文本粘贴到文本编辑器中,然后存为以.reg为扩展名的文件。双击后将信息添加到注册表中。然后用鼠标右键点击一个动态链接库或OCX控件,在弹出的环境菜单中你将会看到Register和Unregister的选项。运用这个方法的前提是你的计算机上必须有regsvr32.exe文件。
REGEDIT4
[HKEY_CLASSES_ROOT\.ocx]
@="ocxfile"
[HKEY_CLASSES_ROOT\ocxfile]
@=”OCX”
[HKEY_CLASSES_ROOT\ocxfile\shell\Register\command]
@="RegSvr32 \"%1\""
[HKEY_CLASSES_ROOT\ocxfile\shell\Unregister\command]
@="RegSvr32 /u \"%1\""
REGEDIT4
[HKEY_CLASSES_ROOT\.dll]
@="dllfile"
[HKEY_CLASSES_ROOT\dllfile]
@=”DLL”
[HKEY_CLASSES_ROOT\dllfile\shell\Register\command]
@="RegSvr32 \"%1\""
[HKEY_CLASSES_ROOT\dllfile\shell\Unregister\command]
@="RegSvr32 /u \"%1\""

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧