Скрыть окно команд в приложении C #

Прежде чем вы зададите повторяющийся вопрос, позвольте мне объяснить (поскольку я читал все похожие темы).

Мое приложение имеет оба этих параметра:

  procStartInfo.CreateNoWindow = true;
  procStartInfo.WindowStyle = ProcessWindowStyle.Hidden;

и также имеет WindowsApplication в качестве типа вывода.

Черное окно ВСЕ ЕЩЕ появляется, когда я вызываю команду командной строки. Что еще я могу сделать, чтобы скрыть окно? Это происходит не для всех команд, XCOPY - это ситуация, когда черное окно действительно вспыхивает. Это происходит только тогда, когда пункт назначения, в котором я выполняю XCOPYing, уже содержит файл и запрашивает, хочу ли я его заменить. Даже если я пройду через / Y, он все равно будет кратковременно мигать.

Я открыт для использования vbscript, если это поможет, но есть ли другие идеи?

Клиент вызовет мой исполняемый файл и затем передаст команду командной строки, например:

C: \ MyProgram.exe start XCOPY c: \ Test.txt c: \ ProgramFiles \

Вот полный код приложения:

class Program
{
    static void Main(string[] args)
    {      
            string command = GetCommandLineArugments(args);

            // /c tells cmd that we want it to execute the command that follows and then exit.
            System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd.exe", "/c " + command);

            procStartInfo.RedirectStandardOutput = true;
            procStartInfo.UseShellExecute = false;

            // Do not create the black window.
            procStartInfo.CreateNoWindow = true;
            procStartInfo.WindowStyle = ProcessWindowStyle.Hidden;

            System.Diagnostics.Process process = new System.Diagnostics.Process();
            process.StartInfo = procStartInfo;
            process.Start();

        }

    private static string GetCommandLineArugments(string[] args)
    {
        string retVal = string.Empty;

        foreach (string arg in args)
            retVal += " " + arg;


        return retVal;
    }
}
15
задан mint 9 August 2010 в 13:46
поделиться

2 ответа

Проблема в том, что вы используете cmd.exe. Будет скрыто только его окно консоли, но не окно консоли для процесса, который вы просите запустить. Нет смысла использовать cmd.exe, если вы не пытаетесь выполнить некоторые из команд, которые он реализует сам. Нравится КОПИЯ.

Вы все еще можете скрыть окно, если вам нужен cmd.exe, вам нужно будет использовать параметр / B для запуска. Типа start /? в командной строке, чтобы увидеть параметры. Не то чтобы это помогло, вы не можете использовать НАЧАТЬ КОПИРОВАТЬ.

В xcopy.exe есть особая особенность, которая тоже может вас сбить с толку. Он не выполняет , а не , если вы также не перенаправляете ввод. Он просто не может работать без диагностики.

9
ответ дан 1 December 2019 в 04:08
поделиться

Я вижу, что вы вызываете cmd и затем передаете команду в качестве параметров. Вместо этого вызовите команду напрямую

например,

    System.Diagnostics.ProcessStartInfo procStartInfo = new System.DiagnosticsProcessStartInfo("xcopy", "<sourcedir> <destdir> <other parameters>");

procStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
4
ответ дан 1 December 2019 в 04:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: