【问题标题】:c# detect an open web browserc# 检测打开的网络浏览器
【发布时间】:2014-08-08 15:53:55
【问题描述】:

我正在编写一个程序,在关闭之前搜索某些网页。我希望我的程序使用默认浏览器打开一个新窗口。我可以让我的程序关注最新的窗口实例,然后在完成后关闭该实例。

我整天都在盯着 WebBrowser.Navigate 和 System.Diagnostics.Process.Start(target) ,但我找不到它们的最佳位置。

WebBrowser.Navigate 总是打开 IE,我一直在查看 API,但找不到更改所用程序的方法。有没有其他人看到我看不到的东西?有没有办法改变使用的应用程序?

System.Diagnostics.Process.Start(target) 在新选项卡中打开,而不是像导航那样的新窗口。然而,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:对象引用未设置为实例 一个对象。

这似乎很愚蠢,因为上面的代码也让我认为我的默认浏览器是一个进程的实例,然后应该能够调用非静态函数“close()”。

【问题讨论】:

    标签: c# browser


    【解决方案1】:

    好的,如果我的问题正确,您正在寻找一种在“默认”浏览器中打开网页的方法。

    这可以通过简单地创建一个新流程来完成,例如:

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

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

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

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

    【讨论】:

    • 好的,我认为你用 CreateNoWindow 击中了头。我不知道那个属性。但是,当我完全按照 API 的方式使用它时,由于某种原因,它不会在新窗口中打开。有任何想法吗?我将在上面的问题中发布相关代码供您查看。也许我有一个错误。
    【解决方案2】:

    嘿要检查它是否加载到任何地方,请执行以下操作:

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

    【讨论】:

    • 太棒了,这是一个巨大的帮助! Microsoft 支持页面太大了,我很难找到我需要的东西。谢谢
    • 感谢您的评论,如果帖子真的对您有帮助,请标记为答案。
    【解决方案3】:

    您应该像这样使用 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();
    

    【讨论】:

      猜你喜欢
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 2021-01-21
      • 2011-04-07
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      相关资源
      最近更新 更多