我想要隐藏在调用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秒
答案 0 :(得分:0)
您可以尝试输入此代码:
while(p.MainWindowHandle == IntPtr.Zero)
{
p.Refresh();
}
ShowWindow(p.MainWindowHandle, SW_HIDE);
在任务中运行它?它应该删除程序冻结。