रजिस्ट्री को क्रॉल करने के कई (कई, कई) सुझावों के साथ समस्या है कि:
- एक से अधिक रजिस्ट्री स्थान आप
- की किसी कक्षा पंजीकृत किया जा सकता देखने के लिए और रजिस्ट्री
Registration-free COM में मौजूद नहीं की आवश्यकता होगी है की अनुमति देता है एक वर्ग इसके बिना उपलब्ध होने की आर होना egistered। संकल्पनात्मक रूप से आप यह नहीं जानना चाहते कि कोई वर्ग "पंजीकृत" है, तो आप बस जानना चाहते हैं कि यह पर्याप्त रूप से पंजीकृत है।
दुर्भाग्य से केवल (और सबसे अच्छा) तरीका है कि ऐसा करने के लिए इसे बनाने के लिए है:
//Code released into public domain. No attribution required.
function IsClassRegistered(const ClassID: TGUID): Boolean;
var
unk: IUnknown;
hr: HRESULT;
begin
hr := CoCreateInstance(ClassID, nil, CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, IUnknown, {out}unk);
unk := nil;
Result := (hr <> REGDB_E_CLASSNOTREG);
end;
स्रोत
2015-10-04 03:12:27
चेतावनी दी जानकारी होनी चाहिए कि इसका मतलब यह नहीं है वास्तविक ocx डिस्क पर और सही स्थान में है। और फिर भी इसका मतलब यह नहीं है कि ओसीएक्स समस्याओं के बिना लोड किया जा सकता है। और चूंकि पंजीकरण मुफ्त कॉम है (http://msdn.microsoft.com/en-us/library/ms973913.aspx) यह भी नहीं बताता कि ओसीएक्स संभावित रूप से प्रयोग योग्य है या नहीं। –