我正在尝试以隐藏模式启动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无法正常工作。我已经为此问题上网了,但是无法获得正确的解决方案。
这个版本适用于我的盒子:
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
{ }
我只有一个Win32Exception告诉我找不到文件(test.txt),但是该过程正在运行,并且没有可见的窗口。
请小心退出该过程,否则用户最终将运行不可见的过程。
如果您的应用程序不合作(例如您在注释中提到的calc.exe),则可以尝试以下操作:
在某处定义:
[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
不起作用,但它与startInfo.FileName = @"c:\windows\system32\calc.exe";
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句