c#检测一个开放的Web浏览器

时间:2014-08-07 06:04:15

标签: c# browser

我正在编写一个程序,在关闭之前搜索某些网页。我希望我的程序使用DEFAULT BROWSER打开一个新窗口。我可以让我的程序专注于最新的窗口实例,然后它会在完成后关闭该实例。

我整天都在盯着WebBrowser.Navigate和System.Diagnostics.Process.Start(目标),但我找不到其中任何一个的最佳位置。

WebBrowser.Navigate总是打开IE浏览器,我一直在寻找API,无法找到改变所用程序的方法。有没有人看到我不喜欢的东西?有没有办法改变使用的应用程序?

System.Diagnostics.Process.Start(target)在新选项卡中打开,而不是像navigation一样的新窗口。但是,API中没有任何重载函数可以说"创建新实例或窗口"。

这是我的问题,它们都有我想要的碎片,但我无法弄清楚如何获得我需要的碎片。

我非常感谢你的帮助。我一直在寻找几个小时,我似乎可以找到解决方案。

Jester的代码示例:

            Process defaultbrowser = new Process();


            defaultbrowser.StartInfo.CreateNoWindow = true;
            defaultbrowser = Process.Start(target);       

            int waitTime = Convert.ToInt32(numericUpDown2.Value);
           System.Threading.Thread.Sleep(waitTime*1000);

           defaultbrowser.CloseMainWindow();
           defaultbrowser.Close();

此外,我的Close()函数导致运行时错误,表示;

  

System.NullReferenceException:未将对象引用设置为实例   一个对象。

这看起来很愚蠢,因为上面的代码让我觉得我的defaultbrowser是一个进程的实例,然后它应该能够调用非静态函数" close()"

3 个答案:

答案 0 :(得分:2)

ok如果我的问题得到了解决,那么您正在寻找一种方法来打开网页"默认"浏览器。

这可以通过简单地创建一个新的过程来完成:

Process.Start("http://google.com");

如果您想控制使用浏览器浏览器,可以将网址作为参数传递给浏览器的exe文件:

System.Diagnostics.Process.Start("PATH to exe", "Command Line Arguments");

要在新窗口中启动该过程,请将ProcessInfo对象传递给Process.Start 并设置CreateNoWindow more info on that

答案 1 :(得分:0)

嘿要检查它是否在任何地方加载,请执行:

if(browser.ReadyState == WebBrowserReadyState.Complete) {
// It's Open!
}

答案 2 :(得分:0)

您应该像这样使用System.Diagnostics.Process:

Process Chrome = new Process(); //Create the process
Chrome.StartInfo.FileName = @"C:\Program Files\Google\Chrome\Application\chrome.exe";  // Needs to be full path
Chrome.StartInfo.Arguments = ""; // If you have any arguments
Chrome.Start();