2010-10-01 4 views
4

Я использую следующий код, чтобы открыть сайт в интернет-проводникОткрыть новую вкладку в IE

ProcessStartInfo startInfo = new ProcessStartInfo 
{ 
    Arguments = "http://www.example.com", 
    FileName = "C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe", 
    RedirectStandardInput = true, 
    UseShellExecute = false 
}; 
System.Diagnostics.Process process = System.Diagnostics.Process.Start(startInfo); 

Как я могу открыть сайт в новой вкладкене новый браузер, учитывая, что есть браузер уже открыт ???

Ну,

Мы строим приложение, в котором пользователь может использовать 2 варианта:

1-с помощью браузера по умолчанию.

2- используйте один из следующих браузеров: IE, Google Chrome и Firefox (на данный момент).

и после выбора браузера, который он хочет использовать в своем приложении, он должен выбрать, хочет ли он открыть запрошенную страницу в новом окне или на новой вкладке.

например: если он выберет IE с новой вкладкой, то система попытается найти последнюю страницу, открытую программой, и обновить ее, если она существует, и если нет, он откроет ее на новой вкладке.

Что касается браузера IE, я думаю, что EricLaw -MSFT помог мне найти способ открыть новую вкладку и новое окно, но я все же должен знать, как получить открытую вкладку (уже открытую моей программой) и обновить в потребности.

Я все равно должен сделать то же самое для Firefox и Google Chrome.

Спасибо за ваши ответы, и извините еще раз за мой плохой английский :)

ответ

9

Вы можете просто использовать:

Process.Start("http://www.mysite.com"); 

Это будет не обязательно открыть в IE, но в браузере пользователей по умолчанию в новой вкладке (если браузер поддерживает его), и что, вероятно, что пользователь хочет в любом случае;)

+1

+1 Открытие в браузере пользователя по умолчанию, настоятельно рекомендуется. Являясь могущественным пользователем, я очень раздражаюсь, когда приложение пытается запустить IE для сайта, когда я могу запустить Chrome за полчаса, и у IMHO есть лучший обзор. – scunliffe

+0

вы пишете, ваше решение прекрасно работает, но что, если пользователь не хочет использовать свой браузер по умолчанию? как мне это сделать? – Gaby

+0

Насколько я знаю, вы не можете, если нет, как писал Фиона Холдер, IE имеет некоторый параметр командной строки, который вы можете передать ему, чтобы дать эту функциональность. И я сомневаюсь в этом, поскольку это означает, что экземпляр IE, который вы пытаетесь открыть, должен увидеть, если другой экземпляр, если он открыт, отправит URL-адрес этому экземпляру и закроется. –

1

Если только iexplore.exe имеет некоторые параметры, которые вы можете пройти к нему, я не уверен, если вы можете.

Весь код, который у вас есть, это запуск нового процесса IE, поэтому я не вижу, как он сможет использовать уже запущенный процесс.

Из интереса, если вы знаете, что работает браузер, почему вы используете этот метод для навигации?

1

ссылка Interop.SHDocVw.dll

InternetExplorer ie = null; 

SHDocVw.ShellWindows allBrowser = new SHDocVw.ShellWindows();//gives all browsers 
int browserCount = allBrowser.Count - 1;//no . of browsers 
while (browserCount >= 0) 
    { 
    ie = allBrowser.Item(browserCount) as InternetExplorer; 
    if (ie != null && ie.FullName.ToLower().Contains("iexplore.exe"))//all IE will have this name 
     { 
     ie.Navigate2("http://www.example.com", 0x1000);//0x1000 is the flag to open IE in new tab 
     break; 
     } 
     browserCount--; 

    } 
Смежные вопросы