当前位置: 首页 > 编程技术 > 正文

获取控件的ProgID和CLSID

ProgID的全程是:Programmatic Identifiers,类似于程序的唯一标识,通过ProgID,我们可以获取CLSID,

比如下面就是通过ProgID获取CLSID的一个例子:

CLSID clsid;

HRESULT hResutl = CLSIDFromProgID(L"Word.Application",&clsid);
if(FAILED(hResutl)){		
MessageBox(_T("CLSIDFromProgID错误"),_T("错误"),MB_ICONWARNING);		
return 0;
}

通过CLSIDFromProgID,我们可以通过ProgID得到CLSID,

但是。我们又如何得到ProgID呢?这里分为三种情况

情况一:自己编写的已经注册的Activex控件获取ProgID

第一步,

如果是自己编写的ProgID的控件的话,如果是MFC的ActiveX控件的话,那么在工程的idl文件中,在关键词 coclass的前一行的uuid里面的内容就为CLSID,比如:

//  CPageSettingInfoCtrl 的类信息
	[		
uuid(3D030DC3-8E36-4349-A2F6-5DC55C2986B1)  //CLSID就为3D030DC3-8E36-4349-A2F6-5DC55C2986B1	
]	
coclass PageSettingInfo  //coclass 关键词	
{		
[default] dispinterface _DPageSettingInfo; [default, source] dispinterface _DPageSettingInfoEvents; };

更通俗点,假设你的工程名称为PageSettingInfo,那么在 idl文件 的 CPageSettingInfoCtrl的类信息 这个注释下面的UUID的值就是CLSID

第二步,

打开注册表编辑器,Ctrl+F搜索 上面得到的CLSID,一般在HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{上面得到的CLSID}\ProgID的值就为控件的ProgID:
获取ProgID

第二种: MFC的ActiveX控件获取ProgID

如果是这种情况,基本上可以肯定的是,如果工程名称为 X ,那么ProgID就为  X.Xctrl.1

比如工程名称为 PageSetup,那么注册后的控件的ProgID为 PageSetup.PageSetupCtrl.1

第三种 :其他软件或者是系统相关控件获取ProgID

如果是这种情况的话,那么只能查询了,

比如已知的几个ProgID:
word相关的ProgID:Word.Application , Word.Document, Word.Template

Excel相关的ProgID:Excel.ApplicationExcel.AddIn

更多的ProgID可以参考下面的网站:http://msdn.microsoft.com/en-us/library/aa433255%28v=office.12%29.aspx

或查询软件提供商的开发文档



本文固定链接: http://kuaile.in/archives/1077 | 蒲公英的博客

该日志由 蒲公英 于2012年06月19日发表在 编程技术 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 获取控件的ProgID和CLSID | 蒲公英的博客
关键字: , ,
【上一篇】
【下一篇】

获取控件的ProgID和CLSID:等您坐沙发呢!

发表评论


You must enable javascript to see captcha here!

快捷键:Ctrl+Enter