COM原理
+ -

COM 根据CLSID获取ProgID

2022-02-17 83 0
void GetProgID()
{
    CoInitialize(NULL);
    //{000209FF-0000-0000-C000-000000000046} = word.application
    LPOLESTR lpwProgID = NULL;                        //指针
    CLSID clsid = { 0x209ff,0,0,{0xc0,0,0,0,0,0,0,0x46} };    //定义一个CLSIDS标识
    CoInitialize(NULL);                                //初始化COM库
    HRESULT hr = ProgIDFromCLSID(clsid, &lpwProgID);        //根据CLSID取得ProgID指针
    if (SUCCEEDED(hr))
    {
        ::MessageBox(NULL, lpwProgID, L"ProgID",MB_OK);        //显示ProgID
        IMalloc* pMalloc = NULL;                            //初始化指针
        hr = CoGetMalloc(1, &pMalloc);                    //取得IMalloc
        if (SUCCEEDED(hr))
        {
            pMalloc->Free(lpwProgID);                        //释放ProgID内存
            pMalloc->Release();                            //释放IMalloc
        }
    }
    CoUninitialize();                                    //释放COM库
}

本机中执行结果如下:
ProgID

因为本机注册表中信息如下:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{000209FF-0000-0000-C000-000000000046}\ProgID]
@="Word.Application.15"

0 篇笔记 写笔记

使用CLSIDFromString将字符串GUID转化成十六进制GUID/UUID
Windows的一般会给相同类型的设备接口注册相同的GUID,但GUID有时别人给的是一个字符串,但是在实际使用过程中我们又使用的是GUID类型,其结构定义如下:typedef struct _GUID { unsigned long Data1; unsigned short ......
COM 类厂和DllGetObjectClass函数
类厂是COM对象的生产基地,COM库通过类厂创建COM对象;对应每一个COM类,都有一个类厂,用于该COM类的对象创建操作。类厂本身也是一个COM对象,它支持一个特殊接口(IClassFactory):class IClassFactory:public IUnknown{ virtua......
COMM CSID和GUID
Office的Word中可以插入EXCEL数据,我们知道是通过Word存储的复合文件功能来实现的。那么当WORD程序读取复合文件,遇到EXCEL数据时,它该如何启动Excel呢?启动后,又如何让Excel自己去读入、解析、显示xls数据呢?CLSID概念有一个非常简单的解决方案,那就是在对象数据的......
COMM ProgID简介
每一个COM组件都需要指定一个CLSID。之所以使用16个字节,就是从概率上保证不重复。为使用方便,也支持另一个字符串名称方式,叫ProgID。见下图注册表的ProgID子键。由于CLSIDProgID是一个概念的两个不同的表示形式,所以在程序中可随便使用任一种。CLSIDProgID之间的......
COM 根据CLSID获取ProgID
void GetProgID(){ CoInitialize(NULL); //{000209FF-0000-0000-C000-000000000046} = word.application LPOLESTR lpwProgID = NULL; ......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!