VB 5/6-Tipp 0271: Eine GUID generieren lassen
von Herfried K. Wagner
Beschreibung
Klassen werden durch eine GUID gekennzeichnet. Das macht sie eindeutig und unverwechselbar, da eine solche Nummer laut Microsoft, kein zweites mal generiert werden kann. Nunja, letztendlich ist es auch nur eine endliche Zahl. Die Wahrscheinlichkeit einer Wiederholgung ist jedoch äußerst gering, rekrutiert sich diese Kombination doch aus Datum, Zeit, rechnerspezifischen Daten, Ländereinstellungen und einigen anderen Merkwürdigkeiten.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: RtlMoveMemory (CopyMemory), RpcStringFreeA (RpcStringFree), UuidCreate, UuidToStringA (UuidToString), lstrlenA (lstrlen) | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Project1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Textfeld "Text1" ' Steuerelement: Schaltfläche "Command1" Option Explicit Private Declare Function UuidCreate Lib "rpcrt4" (lpGUID _ As GUID) As Long Private Declare Function UuidToString Lib "rpcrt4" Alias _ "UuidToStringA" (lpGUID As GUID, lpGUIDString As _ Long) As Long Private Declare Function lstrlen Lib "kernel32" Alias _ "lstrlenA" (ByVal lpString As Long) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias _ "RtlMoveMemory" (lpDest As Any, lpSource As Any, _ ByVal cBytes As Long) Private Declare Function RpcStringFree Lib "rpcrt4" Alias _ "RpcStringFreeA" (lpGUIDString As Long) As Long Const RPC_S_OK = &H0 Const RPC_S_UUID_LOCAL_ONLY = &H720 Const RPC_S_UUID_NO_ADDRESS = &H6CB Private Type GUID Data1 As Long Data2 As Integer Data3 As Integer Data4(7) As Byte End Type Private Sub Command1_Click() Text1.Text = CreateGUID() End Sub Private Function CreateGUID() As String Dim G As GUID, GuidByt&, l&, GuidStr$, Buffer() As Byte If UuidCreate(G) <> RPC_S_UUID_NO_ADDRESS Then If UuidToString(G, GuidByt) = RPC_S_OK Then l = lstrlen(GuidByt) ReDim Buffer(l - 1) As Byte Call CopyMemory(Buffer(0), ByVal GuidByt, l) Call RpcStringFree(GuidByt) GuidStr = StrConv(Buffer, vbUnicode) CreateGUID = UCase$(GuidStr) End If End If End Function '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Project1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 4 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von alen am 16.03.2005 um 16:21
Hallo,
ich wollte fragen wie ich die API Nummer herausfinden kann, hier speziell die API-Nr für die Länderkennung. (würde gerne ein script schreiben welches beim aufruf eines Programms die Ländereinstellung von Deutsch in English ändert. Da ich dies ca. 20 x /Tag mache wäre es vorteilhaft so ein script zu haben.
Danke im voraus
gruß Alen
Kommentar von Mike am 29.04.2003 um 00:17
Mit VB6 auf WIN2000 (SP3) und NT4.0 (SP6) - funktionierte bei mir einwandfrei in der IDE sowie als EXE.
Kommentar von Mirko am 03.12.2001 um 18:31
Ich habe das ganze in eine DLL gepackt, die auch wunderbar auf meinem System funktioniert (WIN 2000). Dann habe ích diese Applikation auf einem NT 4.0 System installiert und mir das ganze system zerschossen. Jedesmal wenn ich mich angemeldet habe wurde der Explorer wieder geschlossen und verursachte einen Fehler. (Dr. Watson). Da half nur noch eine Systemreperatur.
Kommentar von Mike am 15.05.2001 um 16:54
Wo kann ich die GUID Nr. anzeigen lassen? die ich zur Remoteinstallation brauche??? Laut Microsoft am Gehäuse oder im BIOS ich finde diese nr aber nicht.... Help please.