我想知道什么是CLSID数据类型,因为它在C ++中使用,我想在delphi中使用它。
答案 0 :(得分:9)
CLSID是标识COM对象的GUID。为了实例化已注册的COM对象,您需要知道它的CLSID。
通常在Delphi中,您将调用CoCreateInstance
。您只需调用该函数并传递CLSID即可。声明CoCreateInstance
将类ID参数声明为TCLSID
类型,它是TGUID
的简单别名。通过其中一个。
以下是从Delphi源代码中提取的声明:
type
TCLSID = TGUID;
function CoCreateInstance(const clsid: TCLSID; unkOuter: IUnknown;
dwClsContext: Longint; const iid: TIID; out pv): HResult; stdcall;
从我的代码库中调用CoCreateInstance
的示例:
const
CLSID_WICImagingFactory: TGUID = '{CACAF262-9370-4615-A13B-9F5539DA4C0A}';
if not Succeeded(CoCreateInstance(CLSID_WICImagingFactory, ...)) then
...
您可能会创建一个不同的界面,因此需要替换该界面的相应CLSID。
另外还有一个值得了解的小技巧。如果将接口类型作为类型TGUID
的参数传递,并且该接口类型具有GUID,则编译器将替换GUID。所以上面的代码同样可以编写:
type
IWICImagingFactory = interface
// this is the GUID of the interface, the CLSID
[{ec5ec8a9-c395-4314-9c77-54d7a935ff70}]
....
end;
....
if not Succeeded(CoCreateInstance(IWICImagingFactory, ...)) then
...
答案 1 :(得分:6)
什么是CLSID?类ID(CLSID)是128位(大)数字,表示软件应用程序或应用程序的唯一ID 零件。通常它们显示如下 “{AE7AB96B-FF5E-4dce-801E-14DF2C4CD681}”。
您可以将CLSID视为一部分的“社会安全号码” 软件或软件组件。
它们用于什么? Windows使用CLSID来识别软件组件,而无需知道其“名称”。他们也可以 被软件应用程序用于识别计算机,文件或其他 项目
它们来自哪里? Microsoft提供了一个名为GUIDGEN.EXE的实用程序(程序)来生成这些数字。它们是由...生成的 使用当前时间,网络适配器地址(如果存在)等 计算机中的项目,这样两个数字就不会相同。 [1]
和
COM类由CLSID命名,它们是OSF / DCE定义的UUID RPC [2]
引用两个引号