3

googleincognetoウィンドウを閉じるための小さなプログラムを作成したかったのです。

すべてのクロームウィンドウを強制終了するコードがありますが、シークレットウィンドウだけを分離する方法がわかりません

既存のコード:

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

1 に答える 1

4

私はこれを少しいじりましたが、完全な成功には至りませんでした。どのウィンドウがシークレット モードであるかを特定し、そこから技術的にプロセスを強制終了することができました。

ただし、実際のウィンドウを閉じるには、chrome 実行可能ファイルを強制終了する必要があるようです。残念ながら、すべての chrome ウィンドウが閉じてしまいます。

Windowsハンドルを使用してAlt-F4をシミュレートするSendKeysのようなものを取得できる場合があります。または、私が間違っていなければ、.Net 4.5には、試すことができる追加の終了ルーチンがいくつかあります。

それにもかかわらず、これはどのウィンドウがクロムで、どのウィンドウがシークレットかを判断するためのコードです。次に「kill」しますが、ウィンドウを閉じるのではなく、ブラウジングを終了するだけです (Chrome が言うように、Aw, Snap!)。

        [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;
        }
于 2013-01-03T04:38:52.450 に答える