• win32 COM组件编写


    win32的com组件:

    1. 编辑idl,idl文件会生成对应的com class和com interface,例如

    [
    object,
    uuid(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx),
    dual,
    nonextensible,
    pointer_default(unique)
    ]
    interface Iface : IDispatch
    {
    [id(1)] HRESULT SetChange(DWORD arg);
    };

    [
    uuid(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
    ]
    coclass testClass
    {
    [default] interface Iface;
    };

    2.编辑.man文件,.man文件中会包含很多注册表相关信息,将新加入的类的注册信息写入.man文件中,COM组件在运行时,需要根据注册表中类ID找到类。

    HKEY_CLASSES_ROOTCLSIDxxxxx

    HKEY_CLASSES_ROOTInterfacexxxxx

    3.编辑.rgs文件,将注册信息写入.rgs文件,以便生成注册信息。

    4.编辑resource.h文件,将新加入的资源写入resource.h中,如#define IDR_TESTCLASS       112

    4.编辑.rc文件,加入对应的注册表信息,如:IDR_TESTCLASS  REGISTRY   "TestClass.rgs"

    5.编辑testClass.h和testClass.cpp文件,实现接口和类。

    6.进行编译,会生成一个xxx.h文件和xxx_i.c文件,xxx.h和xxx_i.h文件包含了新的idl文件生成的类和接口的声明,给其他使用这个dll或者exe的类使用。

    7.手动编辑注册表文件导入到target machine,运行程序,即可。

    8.测试:

    CComPtr<Iface> pComFace;

    hr = CoCreateInstance(CLSID_testClass, nullptr, CLSCTX_LOCAL_SERVER, IID_PPV_ARGS(&pComFace));
    根据hr的返回值判断是否成功。

  • 相关阅读:
    win10系统封装
    docker基础知识
    TCP三次握手顺手看个示例
    磁盘挂载
    jQuary
    docker rpm包安装
    Mysql单机安装
    docker网络模式
    JavaScript DOM
    JavaScript作用域,面向对象
  • 原文地址:https://www.cnblogs.com/codefinder/p/com_programming.html
Copyright © 2020-2023  润新知