- Offizieller Beitrag
Ich bin mal über GUID gestolpert und habe festgestellt, dass Windows dafür noch weitere Möglichkeiten anbietet, ausser der in der WinAPICom.au3 hinterlegten Funktion.
Die Objektvariante ist mein Favorit.
C
Func _GUID_OLE32() ; = _WinAPI_CreateGUID()
Local $tGUID = DllStructCreate("struct;ulong Data1;ushort Data2;ushort Data3;byte Data4[8];endstruct")
Local $aReturn = DllCall('ole32.dll', 'long', 'CoCreateGuid', 'struct*', $tGUID)
$aReturn = DllCall('ole32.dll', 'int', 'StringFromGUID2', 'struct*', $tGUID, 'wstr', '', 'int', 65536)
Return $aReturn[2]
EndFunc
Func _GUID_RPCRT4()
Local $tGUID = DllStructCreate('ulong Data1;ushort Data2;ushort Data3;char Data4[8]')
Local $aReturn = DllCall('RPCRT4.dll', 'int', 'UuidCreate', 'ptr', DllStructGetPtr($tGUID))
;~ $aReturn = DllCall('RPCRT4.dll', 'int', 'UuidToString', 'ptr', $aReturn[1], 'str*', Null)
$aReturn = DllCall('RPCRT4.dll', 'int', 'UuidToStringW', 'ptr', $aReturn[1], 'wstr*', Null)
Return StringFormat('{%s}', StringUpper($aReturn[2]))
EndFunc
Func _GUID_TypeLib()
Local $oTypeLib = ObjCreate("Scriptlet.TypeLib")
Return $oTypeLib.GUID
EndFunc
ConsoleWrite(_GUID_OLE32() & @CRLF)
ConsoleWrite(_GUID_RPCRT4() & @CRLF)
ConsoleWrite(_GUID_TypeLib() & @CRLF)
Alles anzeigen