2013-12-06 6 views
1

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

Мой код:

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

Отключить кнопку, как только она была нажата? – Tobberoth

+0

Coool ... Liked It .. Thank You. – aceventura

ответ

1

Вы можете попробовать следующий код, перед открытием браузера первыми мы получаем запущенные процессы браузера (бывший 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(); 
    } 
} 
+0

Отлично !!! Worked Perfect! .. Но нужно менять каждый раз, когда изменяется название окна.! – aceventura

0

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

например ...................... .

 webBrowser1.Navigate("www.google.com"); 
+0

Привет Хозефа, Спасибо за ответ. Мне не нужно открывать браузер в приложении. Это может быть веб-страница, так как мне нужно направить пользователя для ввода учетных данных входа с стороннего веб-сайта. – aceventura

0

Вы можете обнаружить, если процесс окончился или нет, поэтому, просто сделать это:

// 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; 
}