gpt4 book ai didi

c# - 如何在 Windows 应用程序中以隐藏模式启动 notepad.exe?

转载 作者:太空宇宙 更新时间:2023-11-03 15:41:34 25 4
gpt4 key购买 nike

我正在尝试以隐藏模式启动 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";

关于c# - 如何在 Windows 应用程序中以隐藏模式启动 notepad.exe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30117181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com