这是我在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。