我试图以隐藏模式启动notepad.exe,如下所示是我写的代码: -
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "notepad.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = @"C:\Users\Sujeet\Documents\test.txt";
}
catch
{
}
但问题是进程(即notepad.exe)成功启动但startInfo.WindowStyle = ProcessWindowStyle.Hidden无效。 我已经为这个问题上网了,但无法得到正确的解决方案。
答案 0 :(得分:0)
此版本适用于我的包装盒:
array1 = new int[dic.Count];
array2 = new int[dic.Count];
int position = 0;
foreach (var kvp in dic)
{
array1[position] = kvp.Value;
array2[position] = kvp.Key;
position++;
}
我只收到Win32Exception,告知无法找到文件(test.txt),但进程正在运行,并且没有可见的窗口。
注意退出流程,否则用户最终会运行不可见的进程。
如果您的应用程序不合作(如评论中提到的calc.exe),您可以尝试以下操作:
定义某处:
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = true;
startInfo.FileName = @"%windir%\system32\notepad.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = @"C:\Users\Sujeet\Documents\test.txt";
Process.Start(startInfo);
}
catch
{ }
然后在创建过程后执行以下操作:
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);
const int SW_SHOW = 5;
const int SW_HIDE = 0;
我不知道为什么路径 var proc = Process.Start(startInfo);
while (proc.MainWindowHandle == IntPtr.Zero) //note: only works as long as your process actually creates a main window.
System.Threading.Thread.Sleep(10);
ShowWindow(proc.MainWindowHandle, SW_HIDE);
不起作用,但它适用于%windir%\system32\calc.exe