zoukankan      html  css  js  c++  java
  • VC调用VB写的COM

    VB.

    步骤:

    1.创建类库;类库的创建必须分为接口和实现类;给外面提供的是COM接口;

    创建了接口和类之后还要创建“Guid”,这个在“工具-》创建GUID”创建。[Guid("A1DEEF6C-A752-4498-9AA9-7ABFA2C9B8C2")]

    2.在“项目属性-》生成”勾选“为COM Interop注册”;在“项目属性-》应用程序-》程序集信息”中设置“使程序集COM可见”;

    经过上面两步就生成了COM方式的DLL,会生成两个文件,一个是DLL文件,一个是tlb文件,VC要用的正是这个tlb文件。

    例:

    <ComClass(GetCbwApp.ClassId, GetCbwApp.InterfaceId, GetCbwApp.EventsId)> _
    Public Class GetCbwApp
    #Region "COM GUID"
        ' 这些 GUID 提供此类的 COM 标识 
        ' 及其 COM 接口。若更改它们,则现有的
        ' 客户端将不再能访问此类。
        Public Const ClassId As String = "a7e68ccf-873b-4295-ae73-d599a840876c"
        Public Const InterfaceId As String = "e9058762-5a15-43ae-ac4a-a2683a8fbc40"
        Public Const EventsId As String = "439d4951-b443-4eaf-aa44-50fb41937b1a"
    #End Region
    Public Sub Login()
     MsgBox ("1")
    End Sub
    End Class
    

    VC这边的调用方式有两种,一种是用命名空间的方式,一种是不用命名空间的方式。

    不用命名空间的方式:

    #import "xxx.tlb" no_namespace named_guids
    
    int main(int argc, char* argv[])
    {
    CoInitialize(NULL);
    
    IUserPtr pICalc(CLSID_User);//接口名+Ptr; CLSID+实现类的名称
    pICalc->Login();//直接调用接口函数
    CoUninitialize();
    }

    用命名空间的方式:

    #import "xxx.tlb"
    
    using namespace ClassLibrary1;
    
    HRESULT hresult;
    CLSID clsid;
    /* ARGSUSED */
    void ufusr(char *param, int *retcod, int param_len)
    {
     CoInitialize(NULL);    //initialize COM library
     //hresult=CLSIDFromProgID(OLESTR("bcsUGIntegration.CbwApp"), &clsid);    //retrieve CLSID of component
     ClassLibrary1::_GetCbwAppPtr pUser = NULL; 
     hresult=pUser.CreateInstance(__uuidof(ClassLibrary1::GetCbwApp));
     if(FAILED(hresult))
     {
      return;
     }
     else
     {
      pUser->Login();
     }
    }
    作者:Joe.Fan
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    第5章:文本处理
    第4章:查找与替换
    第3章:正则表达式
    命令行获取苹果电脑的主要硬件配置
    Linux的tree命令
    log4j.xml的实用例子
    史上最牛js
    Some warning were found during validation
    记十多年前的一次培训经历
    Mac OS X上IntelliJ IDEA 13与Tomcat 8的Java Web开发环境搭建
  • 原文地址:https://www.cnblogs.com/fanxingthink/p/4176162.html
Copyright © 2011-2022 走看看