Como inicio um processo em C #?


Respostas:


220

Conforme sugerido por Matt Hamilton, a abordagem rápida em que você tem controle limitado sobre o processo é usar o método Start estático na classe System.Diagnostics.Process ...

using System.Diagnostics;
...
Process.Start("process.exe");

A alternativa é usar uma instância da classe Process. Isso permite muito mais controle sobre o processo, incluindo agendamento, o tipo de janela em que ele será executado e, mais útil para mim, a capacidade de aguardar a conclusão do processo.

using System.Diagnostics;
...
Process process = new Process();
// Configure the process using the StartInfo properties.
process.StartInfo.FileName = "process.exe";
process.StartInfo.Arguments = "-n";
process.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
process.Start();
process.WaitForExit();// Waits here for the process to exit.

Este método permite muito mais controle do que eu mencionei.


Eu usei esse método para abrir o arquivo .msg usando o Outlook, mas quando tento abrir outro arquivo .msg, ele abriu outra perspectiva. existe alguma maneira de reutilizar o processo atual e evitar abrir outra perspectiva? stackoverflow.com/questions/28534358/…
user1166085

4
Você deve usar uma instrução using ou alienar o processo, bem stackoverflow.com/questions/16957320/...
Hoppe


14

Assim como Matt diz, use Process.Start .

Você pode passar um URL ou um documento. Eles serão iniciados pelo aplicativo registrado.

Exemplo:

Process.Start("Test.Txt");

Isso iniciará o Notepad.exe com o Text.Txt carregado.


4
O que acontece, se nenhum programa estiver registrado para esse tipo?
LC

2
@LC Win32Exception(0x80004005) "Nenhum aplicativo está associado ao arquivo especificado para esta operação"
Yousha Aleayoub 30/12/19

9

Eu usei o seguinte no meu próprio programa.

Process.Start("http://www.google.com/etc/etc/test.txt")

É um pouco básico, mas faz o trabalho para mim.


1
Quando usado com um URL como o seu exemplo, isso também tem a vantagem de usar o navegador da web padrão do sistema para abrir o URL.
Lemonseed

se eu usar este é um servidor, ele será aberto no navegador do servidor ou no navegador do cliente?
É uma armadilha

6
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "/YourSubDirectory/yourprogram.exe");
Process.Start(new ProcessStartInfo(path));

5

Você pode usar esta sintaxe para executar qualquer aplicativo:

System.Diagnostics.Process.Start("Example.exe");

E o mesmo para um URL. Basta escrever seu URL entre este() .

Exemplo:

System.Diagnostics.Process.Start("http://www.google.com");


4
class ProcessStart
{
    static void Main(string[] args)
    {
        Process notePad = new Process();

        notePad.StartInfo.FileName   = "notepad.exe";
        notePad.StartInfo.Arguments = "ProcessStart.cs";

        notePad.Start();
    }
}

3

Declare isso

[DllImport("user32")]
private static extern bool SetForegroundWindow(IntPtr hwnd);
[DllImport("user32")]
private static extern bool ShowWindowAsync(IntPtr hwnd, int a);

E coloque isso dentro da sua função (observe que "checkInstalled" é opcional, mas se você o usar, precisará implementá-lo)

if (ckeckInstalled("example"))
{
    int count = Process.GetProcessesByName("example").Count();
    if (count < 1)
        Process.Start("example.exe");
    else
    {
        var proc = Process.GetProcessesByName("example").FirstOrDefault();
        if (proc != null && proc.MainWindowHandle != IntPtr.Zero)
        {
            SetForegroundWindow(proc.MainWindowHandle);
            ShowWindowAsync(proc.MainWindowHandle, 3);
        }
    }
}

NOTA: Não tenho certeza se isso funciona quando mais de uma instância do .exe está em execução.


2

Inclua o using System.Diagnostics;.

E então chame isso Process.Start("Paste your URL string here!");

Tente algo como isto:

using System.Web.UI;
using System.Web.UI.WebControls;
using System.Diagnostics;

namespace btnproce
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            string t ="Balotelli";
            Process.Start("http://google.com/search?q=" + t);
        }
    }
}

Observe que é uma página de amostra do ASP.NET como exemplo. Você deve tentar improvisar um pouco.


2

Para iniciar o Microsoft Word, por exemplo, use este código:

private void button1_Click(object sender, EventArgs e)
{
    string ProgramName = "winword.exe";
    Process.Start(ProgramName);
}

Para mais explicações, confira este link .


0

Se estiver usando no Windows

Process process = new Process();
process.StartInfo.Filename = "Test.txt";
process.Start();

Funciona para o .Net Framework, mas para o Net core 3.1, também é necessário definir o UseShellExecute como true

Process process = new Process();
process.StartInfo.Filename = "Test.txt";
process.StartInfo.UseShellExecute = true;
process.Start();
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.