Comment utiliser un mutex dans Visual Basic
-
08-06-2019 - |
Question
J'ai importé le kernel32
bibliothèque.Donc, j'ai le createMutex
fonction disponible mais je ne suis pas tout à fait sûr des différents paramètres et valeurs de retour.
Il s'agit de Visual Basic classique, pas de Visual Basic.NET, mais je peux probablement travailler avec l'un ou l'autre langage sous la forme d'une réponse.
La solution
Le code VB ressemble à ceci :
hMutex = CreateMutex(ByVal 0&, 1, ByVal 0&)
Le premier paramètre est un pointeur vers un SECURITY_ATTRIBUTES
structure.Si vous ne savez pas ce que c'est, vous n'en avez pas besoin.Passez NULL (0).
Le deuxième paramètre est TRUE
(différent de zéro ou 1) si le thread appelant doit prendre possession du mutex. FALSE
sinon.
Le troisième paramètre est le nom du mutex et peut être NULL (0), comme indiqué.Si vous avez besoin d'un mutex nommé, transmettez le nom (tout ce qui est unique).Je ne sais pas si le VB
le wrapper rassemble le préfixe de longueur VB
type de chaîne (BSTR
) vers une chaîne Ascii/Unicode terminée par un caractère nul, sinon vous devrez le faire et de nombreux exemples existent.
Bonne chance!
Autres conseils
Voici les déclarations VB6 pour CréerMutex - Je viens de les copier depuis la visionneuse API, que vous devriez avoir dans le cadre de votre installation VB6.VB6 rassemble les chaînes en ANSI terminé par un caractère nul en utilisant la page de codes actuelle.
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
Gardez à l'esprit que si vous créez un mutex à partir de l'IDE VB6, le mutex appartient à l'IDE et ne sera pas détruit lorsque vous arrêterez d'exécuter votre programme - uniquement lorsque vous fermerez l'EDI.
Eh bien, sur la base du Documentation On dirait:
- Attributs de sécurité (peuvent transmettre null)
- Qu'il soit initialement détenu (peut passer faux)
- Le nom de celui-ci
HTH