如何获取所有正在运行的Chrome实例

时间:2018-05-02 10:08:50

标签: c# google-chrome chromium

这是我在Stackoverflow上的第一个问题,但是几年前我就开始关注这个网站了。

我想说我已经已经搜索非常深入网络,所以关于我的问题,但我没有成功解决我的问题。

(我只找到了如何获取当前打开的标签或所有标签的窗口主标题,但之后我无法检测哪个标签属于哪个实例

我必须向我的客户端提供一个程序,该程序能够检测到空闲的chrome实例并将其杀死。

例如:我的客户有 2 或更多)有效Chrome 实例,但他只使用最后一个实例,因此, te剩余的实例,在X毫秒之后(客户端有可能根据自己的喜好调整计时器)未聚焦需要被我的程序杀死。

喜欢this截图

我使用GetForegroundWindow在其他程序中实现了这一点。

但Chrome处理实例的方式使我的方法无法使用。 我试着解释原因:

如果您已经有一个活跃的Chrome实例并开启了新的Chrome实例,那么主要的Chrome进程将嵌入所有新的实例标签,因此,用户会看到Chrome的两个表单 (窗口),但在深层次中,只存在一个 Chrome实例。< / p>

我用来确定流程窗口是否聚焦的代码

    #region [GET_THE_NAME_OF_THE_FOCUSED_WINDOW]
    [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
    private static extern IntPtr GetForegroundWindow();
    public string GetActiveWindowName() {
        try {
            IntPtr HANDLE = GetForegroundWindow();

            Process[] _p = Process.GetProcesses();
            foreach (Process clsProcess in _p) {
                if (HANDLE == clsProcess.MainWindowHandle) {
                    string processName = clsProcess.ProcessName;

                    return processName;
                }
            }
        } catch { }

    return null;
    }
    #endregion

存在一种方法来实现我的需要吗?

此致 Mutu Adi-Marian。

0 个答案:

没有答案