我正在尝试将 AppWinStyle 与 Process.start 一起使用,但它没有像我预期的那样工作。 下面的代码将打开文件 1.txt 并将其最小化,并且没有焦点。
Shell("notepad D:\1.txt", AppWinStyle.MinimizedNoFocus)
但下面的代码将打开 1.txt 并聚焦它。它不会被最小化。
Process.Start("D:\1.txt", AppWinStyle.MinimizedNoFocus)
为什么会这样?请帮我解决这个问题
最佳答案
样板示例:
using System;
using System.Diagnostics;
class Program {
static void Main(string[] args) {
var psi = new ProcessStartInfo("notepad.exe");
//psi.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(psi);
}
}
运行一次以确保其正常工作,然后删除评论并观察结果。您会短暂地看到记事本窗口闪烁,但它会立即再次终止。可能取决于 Windows 版本,我描述了 Windows 8.1 发生的情况
GUI 应用程序通过其 WinMain() entry point 获取您指定的 ProcessWindowStyle , nCmdShow 参数传递您指定的值。应用程序对该值的实际操作完全取决于应用程序。样板实现是将其传递给 ShowWindow() 调用,即使其主窗口可见的调用。
使用 ProcessWindowStyle.Hidden 通常是非常有问题的,正确编写的 GUI 应用程序会忽略它,就像记事本一样。因为你要求它做的是启动程序但不显示任何窗口,甚至不显示任务栏按钮。换句话说,您要求它变成一个僵尸,一个在用户无法访问的情况下运行的进程。用户唯一可能做的事情就是运行任务管理器并终止进程。
当然,绝对希望这不起作用。不应该。
关于c# - AppWinStyle 不适用于 Process.start,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22115814/