procedimento para ligar para um exe apenas uma vez
-
24-09-2019 - |
Pergunta
Estou usando process.info, process start (); Para ligar para um exe no botão, clique em C#.NET, mas toda vez que clico no botão, ele chama um exe e abre um arquivo duplicado na barra de tarefas. Eu quero apenas maximizar o exe que já estava na barra de tarefas.
Estou enfrentando o problema de que está abrindo repetidamente o mesmo arquivo no botão Clique. Existe alguma maneira de abrir um EXE apenas uma vez e no botão clicar, ele pode maximizar o arquivo exe se já foi aberto, em vez de fazer entradas duplicadas?
Solução
Process.Start()
retorna a Process
objeto. O que você poderia fazer é ter uma variável de classe (por exemplo Process startedProcess;
) que é inicializado quando o botão é clicado. Se essa variável for nula, isso significa que o processo ainda não foi iniciado e esse aplicativo deve ser iniciado, caso contrário, ele já está em execução, e devemos ignorá -lo.
Aqui está um exemplo básico:
Process startedProcess = null;
public void button1_Clicked(object sender, EventArgs e)
{
if ( startedProcess == null )
startedProcess = Process.Start("path\\to\\process.exe");
}
Se você deseja alternar automaticamente para essa janela no caso de o aplicativo já estar em execução, o .NET não possui métodos incorporados para fazer isso nativamente. Você precisará dllimports do user32.dll. Um exemplo pode ser encontrado nos comentários nesta página: http://www.eggheadcafe.com/community/aspnet/14/21984/switch-to-another-runnin.aspx
Outras dicas
Isso deve tirá -lo do pé direito:http://www.webdevbros.net/2007/11/14/singelton-application-with-c/