你说的两种DLL:
(1).ActiveX DLL
(2).Win32 DLL
VB中调用也只有两种方法.
ActiveX DLL 的接口可以在VB中引用,然后用类浏览器查即可,还有VC带有一个工具OLE View 也可以查看.
Win32 DLL 可以用VC安装目录bin目录下的一个程序查看,那程序名我忘了,你看看吧.

解决方案 »

  1.   

    *****(声明:版权所有,未经本人许可不得用于任何商业用途!!)*****首先要谈一下DLL的种类
    如果以扩展名分:
    则只有两种:即标准DLL与ActiveX DLL
    实际上DLL绝非只有这些。根据定义,程序运行时动态加载的外部构件程序都是DLL
    所以,当我们点击OCX的属性,我们会发现,属性框中显示的文件类型也叫ActiveX Dll。同样还有*.drv,(驱动程序)*.fnt,*.ttf(字体文件)等等。其次,我们再谈调用方法:
    不管上面所说的类型有多种,从编程的角度上看实际上只是两种:即标准DLL与ActiveX Dll。标准DLL即API(应用程序编程接口型)
    这类动态库与我们正常调用Win32API的方法是一样的,是不是就没有其他方法呢?
    不是!我们实际上还可以给他一种更方便的接口:Type Libaray,这实际上即是用Com接口对其进行封装,有《Hardcore Of Visual Basic 5.0》中就对Win32 API 作了上述封装。
    又如公用对话框,我们可以直接用API方法调用,同时我们也可以使用Microsoft为我们封装成的控件。实际上,你要到第三张安装盘上一定会发现还有一个封装成Type Libaray的公用对话框。
    (注:关于Type Libaray 参见MSDN中 Make Type Libaray的例子)
    同样,对于 ActiveX Dll则实际上还要区分:是容器类(OCX)还是接口类(DLL),需注意的是容器类要通过窗体加载实例才可以实现调用。
    当然,并非所有的容器类都是以OCX作为扩展名。如:Fm20.dll(Microsoft Form2.0 Object Type Libaray)这是一个ATL(VC活动模板库)的DLL。用过此控件的都知道,这是VBA的标准控件。其方法同样是从控件中引用而不是使用引用菜单。而对于接口类,(VB只能写接口类(基于COM(组件对象模型)其继承也是通过接口委派实现))则需要使用“引用”菜单来实现调用。
    但对于接口类,又分类多用户型与全局多用户型。实际上,MSVBVM60.dll以及VB6.OLB都是全局多用户接口。代码中我们即可以看出区分对于多用户接口类:我们要用:
    Dim SomeObj as New SomeClass
    或者
    Dim SomeObj as SomeClass
     Set SomeObj =new SomeClass
    然后:
    SomeClass.成员函数或属性
    而全局多用户则不需要,其调用方法是在引用后直接使用其函数。
    比如我们将注册表类编译成由全局多用户类构成的ActiveX Dll,其中有成员函数
    SaveRegisterSetting
    则我们在引用后即可以直接写代码
    SaveRegisterSetting Root,HKey,HSetion,HType,Value  对于ActiveX Dll 实际上也可以动态引用,这一方法即需要由API函数的支持。使用LoadLibaray。
    由此我们可以发现,微软为何未将Win32 API封装成Type Libaray(象在《Hardcore Of Visual Basic 5.0》一书中那样)可能也有这方面的原因。另一方面,引用Type Libaray 无疑加大程序运行时的系统开销。 调用的方法很易讲明,但其中的原理要深究可能不是一两名句能说清楚的,在此仅供参考!
    (最后声明:版权所有,未经本人许可不得用于任何商业用途!!)