c# 为什么 chrome 不让我用 user32.dll ShowWindow() 隐藏它

c# why will chrome not let me hide it with user32.dll ShowWindow()

我开始 chrome 使用下面的代码。

Process OpenYouTube                = new Process();
Chrome.StartInfo.FileName          = "chrome.exe";
Chrome.StartInfo.WindowStyle       = System.Diagnostics.ProcessWindowStyle.Hidden;
Chrome.Start();

然后使用下面的代码尝试隐藏它。

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

const int SW_HIDE = 0;
const int SW_SHOW = 5;

HideProcessAndChildren(Chrome.Id);

private void HideProcessAndChildren(int pid)
{
    ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Process Where ParentProcessID=" + pid);
    ManagementObjectCollection moc = searcher.Get();
    foreach (ManagementObject mo in moc)
    {
        HideProcessAndChildren(Convert.ToInt32(mo["ProcessID"]));
    }
    try
    {
        Process proc = Process.GetProcessById(pid);
        ShowWindow(proc.MainWindowHandle, SW_HIDE);
    }
    catch (ArgumentException ex)
    {
        // Process already exited.
    }
}

此代码适用于记事本等,但 Chrome 拒绝隐藏。

如何在启动后或启动时隐藏它?我知道硒等

您将无法按照您尝试的方式进行操作。

您可以考虑使用 ChromeDriver 并尝试类似的方法:

var chromeDriverService = ChromeDriverService.CreateDefaultService();
chromeDriverService.HideCommandPromptWindow = true;
return new ChromeDriver(chromeDriverService,  new ChromeOptions());