Solved

Using CoCreateGuid from Visual Basic

Posted on 1998-07-08
5
947 Views
Last Modified: 2013-11-25
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
Comment
Question by:mtoft
  • 3
  • 2
5 Comments
 
LVL 2

Author Comment

by:mtoft
ID: 1465228
Adjusted points to 250
0
 
LVL 1

Accepted Solution

by:
gissing earned 250 total points
ID: 1465229
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
 
LVL 2

Author Comment

by:mtoft
ID: 1465230
Impressive how one can "stretch" the API...

Thank you!
0
 
LVL 2

Author Comment

by:mtoft
ID: 1465231
Impressive how one can "stretch" the API...

Thank you!
0
 
LVL 1

Expert Comment

by:gissing
ID: 1465232
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

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now