赞
踩
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;
}
我们定义了一个COM接口 IHello,其中包含一个方法 Hello。然后,我们实现了这个接口的具体类 HelloImpl,并在其中实现了接口方法 Hello。通过工厂函数 CreateHello,我们可以创建一个COM对象,并返回其指针。
在 main 函数中,我们首先创建了一个 IHello 类型的指针 pHello,然后使用工厂函数 CreateHello 创建了一个COM对象,并将其赋值给 pHello。最后,我们通过调用 pHello 的 Hello 方法来调用COM接口的功能。
这样就完成了一个简单的COM接口的实现和使用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。