所以我想从谷歌浏览器(标题、URL)中提取打开的标签,并在 chrome 任务管理器中列出主题。到目前为止,我已尝试过滤所有 chrome 进程并获取窗口标题,但这不起作用:
var procs = Process.GetProcesses();
...
foreach (var proc in procs)
{
if (Convert.ToString(proc.ProcessName) == "chrome")
{
Console.WriteLine("{0}: {1} | {2} | {3} ||| {4}\n", i, proc.ProcessName, runtime, proc.MainWindowTitle, proc.Handle);
}
}
Run Code Online (Sandbox Code Playgroud)
这没有给我标签的地址或标题,还有其他方法吗?
是否可以访问 Safari 或 Google Chrome 打开的选项卡?URL 或选项卡标题或两者都好?
该应用程序的目的是,用户可以指定一些网站并向其添加标签,该应用程序将测量在这些网站上花费了多少费用,该应用程序将通过可访问性被允许。
所以我有从 Chrome 窗口中提取所有选项卡的代码。
但是,如果我打开了多个窗口,则只能识别最近的一个窗口。
是否可以从多个窗口中提取选项卡,而不仅仅是最近的一个?
编辑:我使用并需要修复的代码:
public List<string> ChromeTabs()
{
List<string> ret = new List<string>();
Process[] procsChrome = Process.GetProcessesByName("chrome");
if (procsChrome.Length <= 0)
{
Console.WriteLine("Chrome is not running");
}
else
{
foreach (Process proc in procsChrome)
{
// the chrome process must have a window
if (proc.MainWindowHandle == IntPtr.Zero)
{
continue;
}
// to find the tabs we first need to locate something reliable - the 'New Tab' button
AutomationElement root = AutomationElement.FromHandle(proc.MainWindowHandle);
Condition condNewTab = new PropertyCondition(AutomationElement.NameProperty, "New …Run Code Online (Sandbox Code Playgroud)