Pergunta
Ter importado o kernel32
a biblioteca.Então, eu tenho a createMutex
função disponível, mas eu não estou certo de diversos parâmetros e valores de retorno.
Este é o clássico Visual Basic, Visual não Basic.NET mas eu provavelmente pode trabalhar com qualquer linguagem, na forma de uma resposta.
Solução
O código do VB é algo como isto:
hMutex = CreateMutex(ByVal 0&, 1, ByVal 0&)
O primeiro parâmetro é um ponteiro para uma SECURITY_ATTRIBUTES
estrutura.Se você não sabe o que é, você não precisa dele.Passar um valor NULO (0).
O segundo parâmetro é TRUE
(diferente de zero, ou 1) se o thread de chamada deve tomar posse do mutex. FALSE
caso contrário.
O terceiro parâmetro é o nome do mutex, e pode ser NULL (0), como mostrado.Se você precisa de um mutex nomeado, passar o nome (nada de especial) no.Não tem certeza se o VB
wrapper empacota o comprimento de prefixo de VB
tipo string (BSTR
) através de um terminada com nulo Ascii/Unicode, cadeia de caracteres, se não, você precisará fazer isso e numerosos exemplos estão lá fora.
Boa sorte!
Outras dicas
Aqui está o VB6 declarações para CreateMutex - Eu só copiei a partir da API viewer, que você deve ter como parte de seu VB6 instalação.VB6 marshall cadeias de terminada com nulo ANSI usando a página de código atual.
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
Tenha em mente que se você criar um mutex do VB6 IDE, o mutex pertence ao IDE e não será destruído quando você parar de executar o programa somente quando você fechar o IDE.
Bem, com base no documentação ele se parece com:
- Atributos de segurança (pode passar null)
- Se é inicialmente de propriedade (pode passar false)
- O nome dele
HTH