Я программирую. NET Framework-приложение, которое открывает веб-сайт в Chrome и переключает его в полноэкранный режим. Проблема, с которой я сталкиваюсь, заключается в том, чтобы определить, открыта ли сеть (я не хочу открывать несколько страниц без необходимости). В этом случае программа должна просто переключить текущее активное окно на правильную вкладку и переключиться на полный экран.
Проблема в том, что только активная вкладка видна программе C# одновременно, поэтому программе необходимо проверять каждую вкладку вручную (путем переключения активной вкладки и проверки названия). Мне все равно, если экран мерцает, бросить все вкладки.
Я нашел это решение онлайн:
private void GetCaptionOfActiveWindow()
{
Process[] procs = Process.GetProcessesByName("Chrome");
// to find the tabs we first need to locate something reliable - the 'New Tab' button
if (procs.Length == 0)
{
//some code to open chrome with the correct web site and change to full screen
return;
}
IntPtr hWnd = IntPtr.Zero;
int id = 0;
int numTabs = procs.Length;
foreach (Process p in procs)
{
if (p.MainWindowTitle.Length > 0)
{
hWnd = p.MainWindowHandle;
id = p.Id;
break;
}
}
SetForegroundWindow(hWnd);
SendKeys.SendWait("^1"); // change focus to first tab
Thread.Sleep(100);
int next = 1;
string title;
while (next <= numTabs)
{
try
{
title = Process.GetProcessById(id).MainWindowTitle.Replace(" - Google Chrome", "");
//richTextBox1.Text += title + "\n";
if (title.ToLower().Contains("some web site name"))
{
// some code to change the current active tab and change to full screen.
return;
}
next++;
SendKeys.SendWait("^{TAB}"); // change focus to next tab
Thread.Sleep(100);
}
catch (Exception ex)
{
// Chrome internal process, doesn't have tab.
}
}
//richTextBox1.Text += "web not exists\n";
//some code to open new tab with the correct web site and change to full screen
}
Это решение отлично работает, если все вкладки Chrome открыты в то же самое окно. Моя проблема состоит в том, чтобы выяснить, что делать, если вкладки разбросаны по нескольким Chrome Windows.