【问题标题】:using C# to close Google chrome incognito windows only仅使用 C# 关闭 Google chrome 隐身窗口
【发布时间】:2013-01-03 02:06:15
【问题描述】:

我想创建一个小程序来关闭谷歌隐身窗口。

我有杀死所有 chrome 窗口的代码,但我不确定如何仅隔离隐身窗口

现有代码:

        Process[] proc = Process.GetProcessesByName("MyApp");
        foreach (Process prs in proc)
        {
            prs.Kill();
        }

【问题讨论】:

    标签: c# google-chrome kill


    【解决方案1】:

    我对此进行了一些尝试,但没有完全成功。我能够确定哪些窗口是隐身的,并从那里从技术上终止该进程。

    但是,似乎必须杀死 chrome 可执行文件才能关闭实际窗口,不幸的是,这会关闭所有 chrome 窗口。

    您可能能够获得类似 SendKeys 的东西来使用 Windows 句柄模拟 Alt-F4,或者如果我没记错的话,.Net 4.5 有一些额外的关闭例程您可以尝试。

    尽管如此,这里是用于确定哪些窗口是 chrome 以及哪些是隐身窗口的代码。然后他们“杀死”,但它不会关闭窗口,只是终止浏览(Aw,Snap!正如 Chrome 所说)。

            [DllImport("user32.dll")]
            static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);
    
            [DllImport("user32.dll")]
            static extern bool CloseWindow(IntPtr hWnd);
    
            [DllImport("user32")]
            private static extern bool SetForegroundWindow(IntPtr hwnd);
    
            public const int WM_SYSCOMMAND = 0x0112;
            public const int SC_CLOSE = 0xF060;
    
            private void button1_Click(object sender, EventArgs e)
            {
                var proc = Process.GetProcesses().OrderBy(x => x.ProcessName);
    
                foreach (Process prs in proc)
                    if (prs.ProcessName == "chrome" && WmiTest(prs.Id))
                    {
                        prs.Kill();
    
                        //To test SendKeys, not working, but gives you the idea
                        //SetForegroundWindow(prs.Handle);
                        //SendKeys.Send("%({F4})");
                    }
            }
    
            private bool WmiTest(int processId)
            {
                using (ManagementObjectSearcher mos = new ManagementObjectSearcher(string.Format("SELECT CommandLine FROM Win32_Process WHERE ProcessId = {0}", processId)))
                    foreach (ManagementObject mo in mos.Get())
                        if (mo["CommandLine"].ToString().Contains("--disable-databases"))
                            return true;
                return false;
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多