• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1376
  • Last Modified:

Using CoCreateGuid from Visual Basic

Hello...

I would like to create and work with GUID's from visual basic. I would like to call CoCreateGuid, and receive a pointer to a UUID, however this seems a bit tricky since the predefined UUID uses unsupported variant types (unsigned long is unsupported?)

If you could provide me with an example of creating a new GUID and converting it to a string, then i'd be happy...

(I could create a DLL in c/c++ that did the job, but if its possible from VB, then i'd prefer that).

Have a nice day, and thank you!
0
mtoft
Asked:
mtoft
  • 3
  • 2
1 Solution
 
mtoftAuthor Commented:
Adjusted points to 250
0
 
gissingCommented:
The declaration you need is:

Declare Function CoCreateGuid Lib "ole32.dll" (ByVal pguid As String) As Long

call it from code like this:

Dim hResult As Long
Dim sGuidBuf As String

    sGuidBuf = String(16, 0)
    hResult = CoCreateGuid(sGuidBuf)

If hResult = 0 then your sGuidBuf string buffer contains the 16 byte values of the GUID. The guid structure is a long, two unsigned shorts and eight chars (which gives the 16 bytes). In vb, put the numerics into longs since vb doesn't support unsigned types. Combine that with the Hex$ function, and you can translate the 16-bytes in your buffer into a more familiar looking GUID.
0
 
mtoftAuthor Commented:
Impressive how one can "stretch" the API...

Thank you!
0
 
mtoftAuthor Commented:
Impressive how one can "stretch" the API...

Thank you!
0
 
gissingCommented:
You're welcome.

Having giving it further thought, you don't have to put the byte values into longs before calling Hex$.

For example, try this:

Dim sMyGuid As String

    sMyGud = ""
    sMyGud = sMyGuid & Hex$(Asc(Mid$(sGuidBuf,4,1)))) & Hex$(Asc(Mid$(sGuidBuf,3,1))))& Hex$(Asc(Mid$(sGuidBuf,2,1))))& Hex$(Asc(Mid$(sGuidBuf,1,1))))

which will start you off with the first long in the guid structure as Hex. (remember the bytes come at you in the buffer with the least significant byte first)

Glad to have been of some help...
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: CompTIA Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now