Pregunta

He importado el kernel32 biblioteca.Entonces, tengo el createMutex función disponible pero no estoy muy seguro de los distintos parámetros y valores de retorno.

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

¿Fue útil?

Solución

El código VB se parece a esto:

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

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

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

El tercer parámetro es el nombre del mutex y puede ser NULL (0), como se muestra.Si necesita un mutex con nombre, pase el nombre (cualquier cosa única).No estoy seguro si el VB el envoltorio ordena el prefijo de longitud VB tipo de cadena (BSTR) a una cadena Ascii/Unicode terminada en nulo; de lo contrario, deberá hacerlo y existen numerosos ejemplos.

¡Buena suerte!

Otros consejos

Aquí están las declaraciones de VB6 para CrearMutex - Los acabo de copiar del visor API, que deberías tener como parte de tu instalación de VB6.VB6 ordena cadenas en ANSI terminado en nulo utilizando 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 VB6 IDE, el mutex pertenece al IDE y no se destruirá cuando deje de ejecutar su programa, solo cuando cierre el IDE.

Bueno, basado en el documentación parece que:

  1. Atributos de seguridad (puede pasar nulo)
  2. Si es de propiedad inicial (puede pasar falso)
  3. El nombre del mismo

HT

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top