我正在编写一个程序,在关闭之前搜索某些网页。我希望我的程序使用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()"
答案 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();