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

时间:2017-10-17 10:25:41

标签: c# google-chrome user32

我使用下面的代码启动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拒绝隐藏。

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

1 个答案:

答案 0 :(得分:1)

您将无法以您尝试的方式进行此操作。

您可以尝试使用ChromeDriver并尝试以下内容:

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