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.
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:
- Atributos de seguridad (puede pasar nulo)
- Si es de propiedad inicial (puede pasar falso)
- El nombre del mismo
HT