隐藏进程创建的窗口

时间:2015-03-20 07:16:11

标签: c# while-loop user32

我想要隐藏在调用p.Start()时创建的窗口。我现在的代码确实可以工作,但由于那里有while循环,我的程序冻结了大约20-40秒。

当前代码:

[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

const int SW_HIDE = 0;

//Process p is already created and initialized
p.Start();
while(p.MainWindowHandle == IntPtr.Zero)
{
  p.Refresh();
}

ShowWindow(p.MainWindowHandle, SW_HIDE);

删除while循环可以防止程序冻结,但窗口不会隐藏。我做了p.StartInfo.CreateNoWindow = true,但这仅适用于控制台窗口。

所以,我的问题是:如何隐藏一个进程创建的窗口,而不会冻结我的程序20秒

1 个答案:

答案 0 :(得分:0)

您可以尝试输入此代码:

while(p.MainWindowHandle == IntPtr.Zero)
{
  p.Refresh();
}

ShowWindow(p.MainWindowHandle, SW_HIDE);

在任务中运行它?它应该删除程序冻结。