Wie man einen mutex verwenden, die in Visual Basic
-
08-06-2019 - |
Frage
Ich habe importiert kernel32
Bibliothek.Also, ich habe den createMutex
- Funktion verfügbar ist, aber ich bin nicht ganz sicher, von den verschiedenen Parametern und Rückgabewerten.
Das ist eine klassische Visual Basic, nicht visuell Basic.NET aber ich kann wohl die Arbeit, die entweder mit Sprache in form einer Antwort.
Lösung
Der VB-code sieht ungefähr so aus:
hMutex = CreateMutex(ByVal 0&, 1, ByVal 0&)
Der erste parameter ist ein Zeiger auf ein SECURITY_ATTRIBUTES
Struktur.Wenn Sie nicht wissen, was es ist, Sie brauchen es nicht.Übergeben Sie den Wert NULL (0).
Der zweite parameter ist TRUE
(nicht-null, oder 1), wenn der aufrufende thread den Besitz des mutex. FALSE
sonst.
Der Dritte parameter ist die mutex-Namen und kann NULL (0), wie gezeigt.Wenn Sie einen benannten mutex, übergeben Sie den Namen (alles Unikate) in.Nicht sicher, ob die VB
wrapper marshals das längenpräfix VB
Typ string (BSTR
) über eine mit null beendete Ascii - /Unicode-string, wenn nicht, Sie müssen zu tun, und zahlreiche Beispiele dafür gibt es genug.
Viel Glück!
Andere Tipps
Hier ist die VB6 Erklärungen für CreateMutex - Ich habe gerade kopiert Sie aus dem API-viewer, die Sie sollten, haben als Teil von Ihre VB6 installation.VB6 marshalls strings null-terminiert ANSI mit der aktuellen Codepage.
Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Public Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" _
(lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, _
ByVal lpName As String) As Long
Beachten Sie, dass, wenn Sie einen mutex aus der VB6-IDE, wird der mutex gehört zu der IDE und wird nicht zerstört werden, wenn Sie aufhören, die Ihr Programm - nur wenn Sie schließen Sie die IDE.
Nun, auf der Grundlage der Dokumentation es sieht aus wie:
- Sicherheits-Parametern (can pass null)
- Ob es zunächst im Besitz (kann passieren false)
- Die name it
HTH