8
A
回答
8
CLSID是標識COM對象的GUID。爲了實例化一個已註冊的COM對象,你需要知道它的CLSID。
通常在德爾福你會打電話CoCreateInstance
。您只需調用該函數並傳遞一個CLSID。聲明CoCreateInstance
聲明類ID參數的類型爲,它是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
...
6
什麼是CLSID?類別ID(CLSID)是一個128位(大)數字,表示軟件應用程序或應用程序組件的唯一ID。通常它們顯示爲如此 「{AE7AB96B-FF5E-4dce-801E-14DF2C4CD681}」。
您可以將CLSID視爲一個 軟件或軟件組件的「社會安全號碼」。
它們用於什麼? Windows使用CLSID識別軟件組件,而不必知道它們的「名稱」。他們還可以通過軟件應用程序使用 來識別計算機,文件或其他 項目。
它們來自哪裏? Microsoft提供了一個名爲GUIDGEN.EXE的實用程序(程序),可以生成這些數字。它們由 使用計算機中的當前時間,網絡適配器地址(如果存在)和其他 項目生成,因此不會有兩個數字相同。[1]
和
COM類由CLSID的,它們是由OSF/DCE RPC所限定[2]
兩個引號引用
相關問題
- 1. 這是什麼GUID?
- 2. GUID/PROGID/CLSID混亂
- 3. 什麼是微軟的CLSID和PROG ID.sqlserver.Management.Smo
- 4. 什麼是GUID類型?
- 5. 什麼是組成一個唯一的標識符,如GUID
- 6. 如何驗證GUID是一個GUID
- 7. 什麼是USB設備的GUID,這是什麼意思
- 8. 爲什麼它總是一個空值?
- 9. 這是什麼LINQ的方法語法,它是一個連接,如果不是,那麼它是什麼?
- 10. JavaScript語法:什麼是({})它是一個函數還是對象?
- 11. 什麼是MIME?它到底是什麼?
- 12. 爲什麼這個PHP構造不是一個數組,btw它是什麼,如果不是一個數組?
- 13. MethodHandle - 它是什麼?
- 14. ImageCaptureService.app它是什麼?
- 15. pthread_cleanup_pop_restore - 它是什麼?
- 16. PTHREAD_MUTEX_INITIALIZER,它是什麼?
- 17. JavaObjectModel。它是什麼?
- 18. KeyChain - 它是什麼?
- 19. C++ MFC從CLSID創建的IShellItem(GUID)
- 20. 什麼是'這個'的構造函數,它是什麼
- 21. 這似乎是一個Javascript事件的類。它是什麼?
- 22. 是否有一個OCaml'@@'操作符,它是什麼意思?
- 23. 是' - >'是一個運算符嗎?它返回什麼?
- 24. 如果「List」是一個monoid,它的「set」是什麼?
- 25. 給定一個函數,它是否是線性的,爲什麼?
- 26. 它是什麼意思「這是一個'在線'格式結構。」?
- 27. 這是爲什麼它是一個「意外的令牌」錯誤?
- 28. 它是對一個函數的引用還是什麼?
- 29. 是什麼TapTarget.forBounds的第一個參數,它是什麼的意思矩形
的UUID命名謝謝,這是我想知道的,CLSID是一個GUID。 –
你可以通過查看源代碼來辨別。你的Delphi版本是否帶有源代碼? –
是的,它的劑量,但我找不到CLSID或TCLSID。 –