When you build your ActiveX controls and components, Visual Basic automatically creates all the GUIDs as necessary. The same also happens in other cases, without you even realizing it: for instance when you make a MDB database replicable, the Jet Engine adds new fields and uses GUIDs to mark their contents.
In some circumstances, however, you may need to create GUIDs yourself, especially when you want to be absolutely sure that you are creating a unique number. Here’s how you call the OLE kernel to get a fresh new GUID each time:
Declare Function CoCreateGuid_Alt Lib "OLE32.DLL" Alias "CoCreateGuid" (pGuid _ As Any) As LongDeclare Function StringFromGUID2_Alt Lib "OLE32.DLL" Alias "StringFromGUID2" _ (pGuid As Any, ByVal address As Long, ByVal Max As Long) As LongFunction CreateGUID() As String Dim res As String, resLen As Long, guid(15) As Byte res = Space$(128) CoCreateGuid_Alt guid(0) resLen = StringFromGUID2_Alt(guid(0), ByVal StrPtr(res), 128) CreateGUID = Left$(res, resLen - 1)End Function
I developed this routine when writing my Addin Master code generator, which generates entire working add-ins from the ground up. When you create add-ins that work in dockable windows you need assign them a GUID, and that’s something that VB can’t do for you.