当前位置:   article > 正文

Win32程序 (创建COM接口使用方法)_win32 com

win32 com

COM(Component Object Model)是一种面向对象的软件组件技术,用于在不同的应用程序之间进行通信和交互。在C语言中,可以使用COM接口来实现COM组件。

#include <stdio.h>
#include <windows.h>

// 定义COM接口的GUID(全局唯一标识符)
const GUID IID_IHelloWorld = { 0x12345678, 0x1234, 0x1234, { 0x12, 0x34, 0x12, 0x34, 0x12, 0x34, 0x12, 0x34 } };

// COM接口定义
typedef struct IHello
{
    HRESULT(*Hello)(void); // 接口方法声明
} IHello;

// 实现COM接口的类
typedef struct HelloImpl
{
    IHello iHello; // 继承COM接口
} HelloImpl;

// COM接口方法的实现
HRESULT Hello(void)
{
    printf("Hello, New-HackerHK!\n");
    return S_OK;
}

// 创建COM对象的函数(工厂函数)
HRESULT CreateHello(IHello** ppHelloWorld)
{
    if (ppHelloWorld == NULL){
        return E_POINTER;
    }

    HelloImpl* pImpl = (HelloImpl*)malloc(sizeof(HelloImpl));
    if (pImpl == NULL){
        return E_OUTOFMEMORY;
    }

    pImpl->iHello.Hello = Hello;

    *ppHelloWorld = &(pImpl->iHello);

    return S_OK;
}

int main()
{
    IHello* pHello = NULL;

    HRESULT hr = CreateHello(&pHello);
    if (FAILED(hr)){
        printf("无法创建 IHello 对象: 0x%X\n", hr);
        return hr;
    }

    // 调用COM接口方法
    hr = pHello->Hello();
    if (FAILED(hr)){
        printf("无法调用 Hello 方法: 0x%X\n", hr);
        return hr;
    }

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63

我们定义了一个COM接口 IHello,其中包含一个方法 Hello。然后,我们实现了这个接口的具体类 HelloImpl,并在其中实现了接口方法 Hello。通过工厂函数 CreateHello,我们可以创建一个COM对象,并返回其指针。

在 main 函数中,我们首先创建了一个 IHello 类型的指针 pHello,然后使用工厂函数 CreateHello 创建了一个COM对象,并将其赋值给 pHello。最后,我们通过调用 pHello 的 Hello 方法来调用COM接口的功能。

这样就完成了一个简单的COM接口的实现和使用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/727217
推荐阅读
相关标签
  

闽ICP备14008679号