Eu utilizo o seguinte codigo no view do projeto... ele verifica se está aberto, caso não esteja ele libera para abrir...
CreateSemaphore(nil, 1, 1, 'NomedoProjeto'); If GetLastError = Error_Already_Exists then begin hdlAplicacao := FindWindow('TFrm_Menu','Frm_Menu'); if not isWindowVisible(hdlAplicacao) then Application.MessageBox('Aplicativo já em execução !','Aviso',mb_IconWarning + mb_ok); Espero que te ajude. Ricardo Mendes Departamento de Informática Tel. (41) 2109-7736 E-mail: [EMAIL PROTECTED] Site: www.totalsat.com.br ----- Original Message ----- From: Alisson To: delphi-br@yahoogrupos.com.br Sent: Wednesday, April 30, 2008 10:52 AM Subject: [delphi-br] Impedir mais de 1 execução do programa Pessoal, criei uma rotina para impedir que o programa seja executado mais de uma vez. Ao abrir o programa pela segunda vez deveria piscar o programa na barra de tarefas e trazer a tela pra frente, mas como abre 2 programas na barra de tarefas, é executado a rotina com o que foi aberto por último. Preciso que execute a rotina para o que foi aberto primeiro. Uso o código abaixo: CreateMutex(nil, TRUE, 'NOMEDOPROGRAMA'); if GetLastError = ERROR_ALREADY_EXISTS then begin Beep(100, 100); H := FindWindow(nil, 'NOMEDOPROGRAMA'); ShowWindow(H, SW_RESTORE);//mostra a janela SetForegroundWindow(H);//traz pra frente FlashWindow(H, True); //Pisca o programa na barra de tarefas MessageBox(0, 'O programa já está aberto!', 'Sivap', mb_OK + mb_IconWarning); Application.Terminate; end; _______________________________________________________ Yahoo! Mail - Sempre a melhor opção para você! Experimente já e veja as novidades. http://br.yahoo.com/mailbeta/tudonovo/ [As partes desta mensagem que não continham texto foram removidas]