Comment utiliser un mutex dans Visual Basic

j'ai importé l' kernel32 bibliothèque. Donc, j'ai l' createMutex fonction disponible mais je ne suis pas tout à fait sûr des différents paramètres et des valeurs de retour.

C'est classique visuel Basique, pas visuel Basic.NET mais je peux probablement travailler avec l'une ou l'autre langue sous la forme d'une réponse.

21
vb6
demandé sur coder-croc 2008-08-04 05:22:49

3 réponses

Le code VB ressemble à quelque chose comme 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'avez pas besoin. Pass NULL (0).

le second paramètre est TRUE (non-zéro ou 1) si le thread appelant doit prendre en charge le mutex. FALSE autrement.

le troisième paramètre est le nom mutex et peut être nul (0), comme indiqué. Si vous avez besoin d'un mutex nommé, passer le nom (unique). Pas assurez-vous que l' VB wrapper commissaires de la longueur de préfixe VB type de chaîne de caractères (BSTR) sur une chaîne ASCII/Unicode sans fin si ce n'est pas le cas, vous aurez besoin de le faire et de nombreux exemples sont disponibles.

Bonne chance!

8
répondu CloudyMarble 2013-02-07 13:22:14

Voici les déclarations VB6 pour CreateMutex - je viens de les copier à partir de L'API viewer, que vous devriez avoir dans le cadre de votre installation VB6. VB6 marshalls les chaînes de caractères à terminaison nulle ANSI en utilisant la page de code 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êtez d'exécuter votre programme - seulement lorsque vous fermez l'IDE.

10
répondu MarkJ 2009-08-14 15:14:45

Eh bien, basé sur le documentation ça ressemble:

  1. attributs de sécurité (peut passer null)
  2. si elle est d'abord détenue (peut passer false)
  3. Le nom

HTH

2
répondu Darren Kopp 2014-12-15 11:38:40