Как открыть веб-страницу, когда пользователь нажимает кнопку, используя приложение Windows Forms в С#? Не следует открывать несколько страниц при повторном нажатии

У меня есть приведенный ниже код, который открывает веб-страницу, когда пользователь нажимает на форму Windows. Проблема: при повторном нажатии, когда веб-страница открыта, приложение открывает другой экземпляр веб-страницы и так далее. Как я могу запретить приложению открывать вторую веб-страницу, когда первая активна? (Как в javascript window.open("","myWindow","width=200,height=100");)) Любая помощь приветствуется.

Мой код:

 private void btLogin_Click(object sender, EventArgs e)
        {
            try
            {
                System.Diagnostics.Process.Start(MyLink);
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message);
            }
        }

person aceventura    schedule 06.12.2013    source источник
comment
Отключить кнопку после нажатия?   -  person Tobberoth    schedule 06.12.2013
comment
Круто... Понравилось.. Спасибо.   -  person aceventura    schedule 06.12.2013


Ответы (3)


Вы можете попробовать следующий код. Перед тем, как открыть браузер, мы сначала получаем запущенные в данный момент процессы браузера (например, Chrome), повторяем каждый процесс и сравниваем MainWindowTitle. Это свойство содержит заголовок открытого окна браузера. Если целевой URL (с заголовком) уже запущен, остальная часть кода игнорируется.

private void OpenBrowser()
{
    bool processStarted = false;

    Process[] processes = Process.GetProcesses();

    foreach (var item in processes)
    {
        if (item.MainWindowTitle.Equals("Google - Google Chrome", StringComparison.OrdinalIgnoreCase))
        {
            processStarted = true;
            break;
        }
    }

    if (!processStarted)
    {
        Process p = new Process();
        ProcessStartInfo info = new ProcessStartInfo();
        info.FileName = "chrome.exe";
        p.StartInfo = info;
        info.Arguments = "https://www.google.lk";
        p.Start();
    }
}
person Kurubaran    schedule 06.12.2013
comment
Превосходно!!! Работает отлично!.. Но нужно менять каждый раз, когда изменяется заголовок окна..! - person aceventura; 06.12.2013

Если цель состоит в том, чтобы открыть веб-страницу в вашем приложении, вам придется использовать элемент управления WebBrowser. Поместите элемент управления WebBrowser на свою форму и добавьте этот код к кнопке, отвечающей за открытие сайта:

Например.......................

       webBrowser1.Navigate("www.google.com");
person Hozefa Laxmidhar    schedule 06.12.2013
comment
Привет Hozefa, Спасибо за ответ. Мне не нужно открывать браузер в приложении. Это может быть веб-страница, так как мне нужно указать пользователю ввести учетные данные для входа со стороннего веб-сайта. - person aceventura; 06.12.2013

Вы можете определить, завершен ли процесс или нет, поэтому просто сделайте следующее:

// verify if the process has exited
if(this.process != null && this.process.HasExited)
{
        Process p = new Process();
        ProcessStartInfo info = new ProcessStartInfo();
        info.FileName = "chrome.exe";
        p.StartInfo = info;
        info.Arguments = "https://www.google.lk";
        p.Start();
        // save the process in a variable
        this.process = p;
}
person Jota WA    schedule 06.12.2013