有没有办法启动和停止通过C#隐藏的进程?

时间:2018-04-12 07:01:01

标签: c#

我想通过C#启动自定义应用程序/进程(.exe)。应用程序是用python编写的pyQT5,UI是隐藏的,因此用户可以在Windows上的Den Systray中看到它。该应用程序是使用pyinstaller编译的。

我可以通过C#启动应用程序,这不是问题,但我找不到在C#应用程序结束时关闭应用程序的方法。我想知道这是否可行。

            // Open the app
            ProcessStartInfo processStartInfo = new ProcessStartInfo();
            processStartInfo.WorkingDirectory = "my_app_bin\\";
            processStartInfo.FileName = "my_app.exe";
            //processStartInfo.WindowStyle = ProcessWindowStyle.Minimized;

            processStartInfo.UseShellExecute = true;
            processStartInfo.RedirectStandardError = false;
            processStartInfo.RedirectStandardOutput = false;
            processStartInfo.CreateNoWindow = true;

            //                processStartInfo.UseShellExecute = true;
            //                processStartInfo.CreateNoWindow = true;
            //                processStartInfo.WindowStyle = ProcessWindowStyle.Normal;

            Process processTemp = Process.Start(processStartInfo);


           ....
           ....

           // closing the app
    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {

    Process[] localByName = Process.GetProcessesByName("my_app");
        foreach (Process p in localByName)
        {
            //var handle = p.MainWindowHandle;

            //ShowWindow(handle, SW_RESTORE);
            //SetForegroundWindow(handle);

            p.CloseMainWindow();
            p.Close();
        }
    }

我还尝试了一些基于ShowWindow的方法,首先让它可见,但没有任何效果。对于测试我修改我的python应用程序不隐藏 - 然后它的工作,所以它取决于那。然后我在C#中尝试了隐藏的Window Style,但是python app仍然可见。有人知道如何修改pyqt5应用程序以便

        processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;

作品?

我需要一个隐藏的解决方案。如果有人有想法会很棒。

谢谢, 的Mathias

0 个答案:

没有答案