微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C#通过进程运行exe,如何隐藏窗口

如何解决C#通过进程运行exe,如何隐藏窗口

我在我的 c# 程序中通过进程运行 exe,我希望该进程完全不可见,而不会弹出它的控制台。

这是我的代码

Process process2 = new Process();
                process2.StartInfo.FileName = "cmd.exe";
                process2.StartInfo.UseShellExecute = false;
                process2.StartInfo.CreateNowindow = true;
                process2.StartInfo.RedirectStandardOutput = true;
                process2.StartInfo.RedirectStandardError = true;
                process2.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                process2 = Process.Start(path3);

即使使用此代码,控制台窗口仍会打开并显示,任何帮助将不胜感激:)

解决方法

使用

UseShellExecute = false; CreateNoWindow = true;

应该隐藏进程,尽管这取决于您打开的路径,如果进程有强制显示

,

尝试以下操作:

private void RunCmd(string exePath,string arguments = null)
{
    //create new instance
    ProcessStartInfo startInfo = new ProcessStartInfo(exePath,arguments);
    startInfo.Arguments = arguments; //arguments
    startInfo.CreateNoWindow = true; //don't create a window
    startInfo.RedirectStandardError = true; //redirect standard error
    startInfo.RedirectStandardOutput = true; //redirect standard output
    startInfo.RedirectStandardInput = false;
    startInfo.UseShellExecute = false; //if true,uses 'ShellExecute'; if false,uses 'CreateProcess'
    startInfo.WindowStyle = ProcessWindowStyle.Hidden;
    startInfo.ErrorDialog = false;

    //create new instance
    using (Process p = new Process { StartInfo = startInfo,EnableRaisingEvents = true })
    {
        //subscribe to event and add event handler code
        p.ErrorDataReceived += (sender,e) =>
        {
            if (!String.IsNullOrEmpty(e.Data))
            {
                //ToDo: add desired code 
                Debug.WriteLine("Error: " + e.Data);
            }
        };

        //subscribe to event and add event handler code
        p.OutputDataReceived += (sender,e) =>
        {
            if (!String.IsNullOrEmpty(e.Data))
            {
                //ToDo: add desired code
                Debug.WriteLine("Output: " + e.Data);
            }
        };

        p.Start(); //start

        p.BeginErrorReadLine(); //begin async reading for standard error
        p.BeginOutputReadLine(); //begin async reading for standard output

        //waits until the process is finished before continuing
        p.WaitForExit();

    }
}

另见this post

,

我通过重命名窗口而不是 ty 来修复它,以获得所有帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。