function GenerateGUID() declare integer CoCreateGuid in ole32.dll string @guid declare integer StringFromGUID2 in ole32.dll ; string @cCLSID, string @cUnicodeString, integer nLen local sGUIDBuffer, sTextBuffer, sGUID, nLength sGUIDBuffer = replicate(chr(0),16) && 128 bit buffer if CoCreateGuid( @sGUIDBuffer) != 0 return null && error endif sTextBuffer = replicate(chr(0),80) && 39 unicode chars + null terminator nLength = StringFromGUID2( @sGUIDBuffer, @sTextBuffer, 40 ) if m.nLength = 0 return null && error, probably buffer too small endif sGUID = strconv( left( m.sTextBuffer, nLength*2-1),10) return sGUID endfuncThe result is an up-to-39 character string of the form like {093A8107-E749-456E-9379-B2CCE2793694}