C #: запуск процесса по нажатию кнопки - PullRequest
0 голосов
/ 29 мая 2011

Я запускаю процесс при нажатии кнопки моего приложения WPF, как показано ниже:

private void btnGetValues_Click(object sender, RoutedEventArgs e)
{
    string arg1 = "1";
    Process p1 = new Process();
    p1.StartInfo.CreateNoWindow = true;
    p1.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    p1.StartInfo.FileName = "myexe.exe";
    p1.StartInfo.Arguments = arg1;
    p1.StartInfo.UseShellExecute = false;
    p1.StartInfo.RedirectStandardOutput = true;
    p1.StartInfo.RedirectStandardInput = true;
    p1.StartInfo.RedirectStandardError = true;
    p1.Start();

    //while (!p1.HasExited)
    //{

    //}

    MessageBox.Show(p1.StandardOutput.ReadToEnd());
}

Проблема заключается в том, что даже после выполнения процесса кнопка продолжает оставаться в нажатом состоянии.В чем может быть проблема?

1 Ответ

3 голосов
/ 29 мая 2011

Зачем вам последнее окно сообщения?прочитайте об этом, и это должно работать.Если у вас все еще возникают проблемы, вы можете запустить его в отдельном потоке.Это способ выполнения нескольких вещей одновременно. здесь является примером.

Редактировать

извините, я понял не то.Вы можете установить фокусировку на что-то другое, если хотите, чтобы кнопка потеряла этот вид.

private void button1_Click(object sender, EventArgs e)
        {
            string arg1 = "1";
            Process p1 = new Process();
            p1.StartInfo.CreateNoWindow = true;
            p1.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            p1.StartInfo.FileName = @"yourExecutable";
            p1.StartInfo.Arguments = arg1;
            p1.StartInfo.UseShellExecute = false;
            p1.StartInfo.RedirectStandardOutput = true;
            p1.StartInfo.RedirectStandardInput = true;
            p1.StartInfo.RedirectStandardError = true;
            p1.Start();
            //while (!p1.HasExited)
            //{

            // }

            MessageBox.Show(p1.StandardOutput.ReadToEnd());

            button2.Focus();  // set button 2 to have a height of 0 so it is not visible
            // or place it somewhere where it cannot be seen



        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...