Запуск приложения из моей программы не запускает его так же, как при двойном щелчке вручную - PullRequest
0 голосов
/ 09 января 2020

Чтобы запустить приложение из моей программы C#, я попробовал решения, перечисленные в теме по следующей ссылке: Запуск приложения (.EXE) из C#? .

Я сталкиваюсь с загадочной ситуацией: во время работы моей программы новое окно не отображается, поэтому я открыл список процессов в надежде получить больше информации. Вот что происходит: когда я дважды щелкаю свой исполняемый файл (случай 1: не использую код для запуска приложения), вызываются 5 разных процессов с одинаковыми именами, но разными PID, и если я закрываю приложение, все они тоже закрываются поэтому здесь я предполагаю, что все это должно работать для корректного запуска моего приложения; с другой стороны, всякий раз, когда я использую программу для запуска приложения, запускается только один процесс, и окно не отображается (это не вопрос ProcessStartInfo , так как я убедился, что изменил параметры так, чтобы новое окно отображается при необходимости). Любая идея относительно того, почему есть два различных поведения в зависимости от того, "я дважды щелкаю" вручную или запускаю с помощью инструкции C#? Если это «вопрос аргументов», есть ли способ получить больше информации об аргументах, которые неявно используются, когда я дважды щелкаю (и пока не предоставляю свой сценарий)?

Спасибо!

Приложение:

C# код:

using System;
using System.Diagnostics;
using System.IO;

namespace GradeBook
{
    class Program
    {
        static void Main(string[] args)
        {
            ProcessStartInfo start = new ProcessStartInfo();
            start.Arguments = "";
            Directory.SetCurrentDirectory("C:\\Users\\sthg\\AppData\\Local\\Programs\\sthg");
            start.FileName = "myApp.exe";
            start.WindowStyle = ProcessWindowStyle.Normal;
            start.CreateNoWindow = false;
            int exitCode;

            using (Process proc = Process.Start(start))
            {
                proc.WaitForExit();
                exitCode = proc.ExitCode;
            }
        }
    }
}
...