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.

Foi útil?

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:

  1. Atributos de segurança (pode passar null)
  2. Se é inicialmente de propriedade (pode passar false)
  3. O nome dele

HTH

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top