vb6 - telecharger - visual basic download




Comment utiliser un mutex dans Visual Basic (2)

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

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


Voici les déclarations VB6 pour CreateMutex - Je viens de les copier depuis la visionneuse d'API, que vous devriez avoir dans le cadre de votre installation de VB6. VB6 marshalls chaînes à ANSI à terminaison nulle en utilisant la page de codes en cours.

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'EDI VB6, le mutex appartient à l'EDI et ne sera pas détruit lorsque vous arrêtez d'exécuter votre programme - seulement lorsque vous fermez l'EDI.


Le code VB ressemble à ceci:

hMutex = CreateMutex(ByVal 0&, 1, ByVal 0&)

Le premier paramètre est un pointeur vers une structure SECURITY_ATTRIBUTES . 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 (non nul, ou 1) si le thread appelant doit prendre en charge le mutex. FALSE sinon.

Le troisième paramètre est le nom mutex et peut être NULL (0), comme indiqué. Si vous avez besoin d'un mutex nommé, passez le nom (quelque chose d'unique). Vous ne savez pas si le wrapper VB BSTR type de chaîne VB préfixé par la longueur ( BSTR ) à une chaîne Ascii / Unicode terminée par zéro. pour faire cela et de nombreux exemples sont là-bas.

Bonne chance!