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?

Foi útil?

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

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