📄 18.1.4 activex控件的注册.txt
字号:
18.1.4 ActiveX控件的注册
刚才已经提到,当在VB开发环境中选中Clock控件时,它会列出该控件的位置,但是VB是如何知道我们编写的Clock这个ActiveX控件所在的路径呢?实际上,当在VC++开发环境中生成Clock控件程序时,输出窗口中有下面两句话:
Registering ActiveX Control...
RegSvr32: DllRegisterServer in . \ Debug\Clock.ocx succeeded.
其中regsvr32程序的作用就是注册ActiveX控件。也就是说,在生成控件时, VC++ 编译器会调用 regsvr32程序去注册Clock控件,将该控件的所有信息,包括其所在路径都写入注册表中。当在VB或在 ActiveX Control Test Container这些测试容器中加载 ActiveX控件时,它们都会从注册表中搜寻所有的ActiveX控件的相关信息,并在它们的控件对话框中列出这些控件。这就是在 VB中之所以能够找到 ActiveX控件相关信息的原因。读者应记住,所有的ActiveX控件必须在注册之后才能使用。
如果想要删除ActiveX控件的注册信息,可以利用Regsvr32程序的/u选项来实现。通常,我们可以选择系统的【开始\运行】命令,然后在运行对话框上的打开编辑框控件中输入 "regsvr32/u"命令,再在其后输入想要删除的ActiveX控件的完整路径,如图 18.18所示。
图 18.18注销Clock控件的注册
小技巧:在图 18.18所示的运行对话框中,先在"打开"编辑框控件中输
E 入 "regsvr32 /u"命令,然后在资源管理器中找到将要删除的那个ActiveX控件所在的文件,这时要确保运行对话框位于资源管理器窗口的上面,之后用鼠标将该ActiveX控件文件拖动到运行对话框的打开编辑框控件上并松开鼠标,这时在打开编辑框拉件中就显示了该控件文件的完整路径名。
单击【确定】按钮,这时会弹出如图 18.19所示的信息对话框。
图 18.19成功注销Clock控件的提示信息
该信息框中提示 "DIIUnregisterServer in D:\VC++深入编程\Chapter18\Clock\Debug\ Clock.ocx suckeded."。这里的DIIUnregisterServer是一个函数,并且是ActiveX控件提供
的一个函数。 "regsvr32/u"这一命令执行时实际上调用的是指定控件的DIIUnregisterServer函数来删除该控件的注册信息,因为对于regsvr32这个程序来说,它并不知道需要删除哪些信息,所以它只是调用控件的 DIIUnregisterServer函数,由后者来删除该控件在注册表中的注册信息。
当删除了 Clock控件在注册表中的信息之后,如果在 VB或 ActiveX Control Test Container程序中再想加载Clock控件时,在控件列表中就找不到这个控件了。如果想再次注册Clock控件,仍可以选择regsvr32程序,但不需要使用/u选项,其他同上。这时将显示如图 18.20所示的对话框。
图 18.20成功注册Clock控件的提示信息
在该信息框中提示: "DllRegisterServer in D:\VC++深入编程飞Chapter18飞Clock'飞Debug\ Clock.ocx succeeded."。同样的, DIIRegisterServer也是ActiveX控件提供的一个函数。当执行regsvr32这一命令时,它实际上是调用指定控件的DIIRegisterServer函数,将该控件的信息写入注册表。因此,实际上, ActiveX控件的注册和取消注册都是利用该控件自身提供的两个函数来完成的, regsvr32程序只是调用这些函数而己。当注册完成之后,在VB或ActiveX Control Test Container程序的控件列表中就可以找到Clock控件了。
在VC++开发环境中,还提供了一个菜单项: "Tools\Register Control" ,让用户可以很方便地调用regsvr32命令。该菜单命令就是调用regsvr32程序注册当前的ActiveX控件。
注意:如果控件处于加载状态下,同时在 VC++开发环境中利用 Build命令生成该控件文件的话,就会出现一个错误,因为生成控件文件时需要重写相应的控件文件。所以,每次在VB环境中,或是在ActiveX Control Test Container 这一测试容器中加载了 Clock控件之后,都应取消该控件的加载,或者关闭当前测试环境。以保证我们下面的工作能够顺利进行。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -