Mah*_*ser 8 c++ delphi interface
我想知道什么是CLSID数据类型,因为它在C++中使用,我想在delphi中使用它.
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;
Run Code Online (Sandbox Code Playgroud)
CoCreateInstance
从我的代码库中获取的调用示例:
const
CLSID_WICImagingFactory: TGUID = '{CACAF262-9370-4615-A13B-9F5539DA4C0A}';
if not Succeeded(CoCreateInstance(CLSID_WICImagingFactory, ...)) then
...
Run Code Online (Sandbox Code Playgroud)
您可能会创建一个不同的接口,因此需要用适当的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
...
Run Code Online (Sandbox Code Playgroud)
什么是CLSID?类ID(CLSID)是128位(大)数字,表示软件应用程序或应用程序组件的唯一ID.通常它们显示为"{AE7AB96B-FF5E-4dce-801E-14DF2C4CD681}".
您可以将CLSID视为一个软件或软件组件的"社会安全号码".
它们用于什么?Windows使用CLSID来识别软件组件,而无需知道其"名称".软件应用程序也可以使用它们来识别计算机,文件或其他项目.
他们来自哪里?Microsoft提供了一个名为GUIDGEN.EXE的实用程序(程序)来生成这些数字.它们是通过使用当前时间,网络适配器地址(如果存在)和计算机中的其他项目生成的,因此任何两个数字都不会相同.[1]
和
COM类由CLSID命名,它们是由OSF/DCE RPC [2]定义的UUID.
引用了两个引用