Definindo o Mutex da sua aplicação


Quando sua aplicação é iniciada, de certa forma ela pode indicar ao Windows e aos outros programas que está em execução. Isso é útil durante a instalação/desinstalação. Se você definir o item AppMutex da sua aplicação na seção [Setup], o programa de instalação não rodará se a aplicação estiver aberta. Por exemplo, numa atualização do seu programa, se o programa de instalação detectasse que sua aplicação estivesse aberta, ele pediria ao usuário para fechá-la, e só depois seguiria a instalação. Na desinstalação ocorreria a mesma coisa, a aplicação não poderia ser desinstalada se seu programa estivesse aberto. Desse modo pode-se evitar erros de substituição ou remoção de arquivos em uso. Obs.: Se sua aplicação tiver dois ou mais mutex, ou caso queira especificar vários, separe-os por vírgula nesta diretiva.

Como criar um Mutex? Depende da linguagem de programação com a qual você trabalha... Saiba que o Mutex deve ser único para cada aplicação, portanto escolha um nome que identifique sua aplicação, e que não corresponda por exemplo a algum outro programa comum que o usuário possa executar. Veja como definir o Mutex no Delphi, C e Visual Basic. Você deve criar o Mutex da sua aplicação logo na inicialização, por exemplo, no evento onCreate dos formulários. Não libere nem exclua o Mutex, ele é encerrado quando sua aplicação é fechada, e deve se manter ativo enquanto ela estiver aberta. Não se preocupe, esse método não diminui a eficiência do sistema. Veja como fazer:

No Delphi:

CreateMutex(nil, False, 'MyProgramsMutexName');

Em C:

CreateMutex(NULL, FALSE, "MyProgramsMutexName");

No Visual Basic

'Defina na seção de declarações (Declarations section):
    Private Declare Function CreateMutex Lib "kernel32" _
    Alias "CreateMutexA" _
    (ByVal lpMutexAttributes As Long, _
    ByVal bInitialOwner As Long, _
    ByVal lpName As String) As Long

'Coloque no código de inicialização (Form_Load ou Sub Main):
    CreateMutex 0&, 0&, "MyProgramsMutexName"

Troque MyProgramsMutexName pelo nome dado ao Mutex da sua aplicação, como por exemplo, "MutexMeuPrograma".

Note que o Mutex no Windows é case-sensitive, ou seja faz-se distinção entre letras maiúsculas e minúsculas. Veja o tópico MS SDK na ajuda do seu ambiente de programação para mais informações.

Exemplo:
AppMutex=MyProgramsMutexName

Fechar