2008-08-04 31 views
20

He importado la biblioteca kernel32. Entonces, tengo la función createMutex disponible, pero no estoy seguro de los diversos parámetros y valores devueltos.Cómo usar un mutex en Visual Basic

Esto es clásico de Visual Basic, no de Visual Basic.NET, pero probablemente pueda trabajar con cualquiera de los dos idiomas en forma de respuesta.

Respuesta

7

El código de VB se parece a esto:

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

El primer parámetro es un puntero a una estructura SECURITY_ATTRIBUTES. Si no sabes de qué se trata, no lo necesitas. Pase NULL (0).

El segundo parámetro es TRUE (distinto de cero, o 1) si el hilo de llamada debe tomar posesión del mutex. FALSE de lo contrario.

El tercer parámetro es el nombre mutex y puede ser NULL (0), como se muestra. Si necesita un nombre mutex con nombre, pase el nombre (algo único). No estoy seguro de si el contenedor VB reúne el tipo de cadena con el prefijo de longitud VB (BSTR) en una cadena Ascii/Unicode terminada en nulo; de lo contrario, necesitará para hacer eso y numerosos ejemplos están por ahí.

¡Buena suerte!

2

Bueno, basado en el documentation que parece:

  1. atributos de seguridad (puede pasar null)
  2. Ya se trate de propiedad inicialmente (puede pasar falsa)
  3. El nombre de ella

HTH

9

Aquí están las declaraciones de VB6 para CreateMutex - Acabo de copiarlas desde el visor de API, que debe tener como parte de su instalación de VB6. VB6 ordena cadenas a ANSI con terminación nula usando la página de códigos actual.

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 

Tenga en cuenta que si crea un mutex desde el IDE de VB6, el mutex pertenece a la IDE y no será destruida cuando se detiene el funcionamiento de su programa - sólo cuando se cierra el IDE.

Cuestiones relacionadas