我想通过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