Как закрыть вкладку во внешнем веб-браузере?

Я пишу настольное приложение и в одной части прохожу поток OAuth 2.0.

Шаги следующие:

  1. Запустить процесс — открыть веб-браузер со страницей входа.
  2. Пользователь входит в систему и авторизует мое приложение.
  3. В фоновом режиме я ищу процесс с определенным именем, сохраняю его (имя) в приложении.
  4. В конце я закрываю веб-браузер.

Проблема в том, что если пользователь ранее открывал некоторые вкладки в веб-браузере - в пункте 1.добавлена ​​новая вкладка и в пункте 4. все закрыто (веб-браузер со всеми вкладками).

Подскажите, есть ли способ закрыть одну вкладку в веб-браузере? Или, может быть, есть другой/более простой способ пройти через OAuth?

В качестве ручного решения я просто покажу пользователю информацию «Теперь вы можете закрыть эту вкладку», однако я хотел бы сделать это автоматически.

Это проект C# .Net 4.0 WPF.

string strAuthUrl = "http://accounts.example.com/login",
       strAuthCode = string.Empty;

// Request authorization from the user (by opening a browser window):
ProcessStartInfo startInfo = new ProcessStartInfo(strAuthUrl);
startInfo.CreateNoWindow = false;

//1.        
Process.Start(startInfo);   
//2. - is happening in web browser
//3.        
do
{
    foreach (Process proc in Process.GetProcesses())
    {
        if (proc.MainWindowTitle.StartsWith("Success code="))
        {
            strAuthCode = proc.MainWindowTitle.ToString().Substring(13, 30);
//4.
            try
            {

                // Close process by sending a close message to its main window.
                proc.CloseMainWindow();
                // Free resources associated with process.
                proc.Close();
                // Wait 500 milisecs for exit
                proc.WaitForExit(500);

                //if proc has not exited so far - kill it
                if (proc.HasExited == false)
                {
                    proc.Kill();
                    proc.WaitForExit();
                }
            }
            catch (Exception ex)
            {
                //Do something with exception
            }

            break;
        }
    }
}
while (string.IsNullOrEmpty(strAuthCode));

Спасибо за ваши предложения.

7
задан H.B. 14 March 2012 в 13:55
поделиться