vb6 - Come utilizzare un mutex in Visual Basic

original title: "vb6 - How to use a mutex in Visual Basic"


Translate

I have imported the kernel32 library. So, I have the createMutex function available but I am not quite sure of the various parameters and return values.

This is classic Visual Basic, not Visual Basic.NET but I can probably work with either language in the form of an answer.



Ho importato la libreria kernel32. Quindi, ho la funzione createMutex disponibile ma non sono abbastanza sicuro dei vari parametri e valori di ritorno. Questo è Visual Basic classico, non Visual B ...

Questo è il riepilogo dopo la traduzione, se è necessario visualizzare la traduzione completa, fare clic sull'icona "traduci"


Tutte le risposte
  • Beryl Lee
    Translate

    The VB code looks something like this:

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

    The first parameter is a pointer to an SECURITY_ATTRIBUTES structure. If you don't know what it is, you don't need it. Pass NULL (0).

    The second parameter is TRUE (non-zero, or 1) if the calling thread should take ownership of the mutex. FALSE otherwise.

    The third parameter is the mutex name and may be NULL (0), as shown. If you need a named mutex, pass the name (anything unique) in. Not sure whether the VB wrapper marshals the length-prefixed VB string type (BSTR) over to a null-terminated Ascii/Unicode string if not, you'll need to do that and numerous examples are out there.

    Good luck!


  • Translate

    Here's the VB6 declarations for CreateMutex - I just copied them from the API viewer, which you should have as part of your VB6 installation. VB6 marshalls strings to null-terminated ANSI using the current code page.

    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
    

    Bear in mind that if you create a mutex from the VB6 IDE, the mutex belongs to the IDE and won't be destroyed when you stop running your program - only when you close the IDE.


  • Translate

    Well, based on the documentation it looks like:

    1. Security attributes (can pass null)
    2. Whether it's initially owned (can pass false)
    3. The name of it

    HTH