C# 如何启动浏览器并稍后将其定向到页面?

C# 如何启动浏览器并稍后将其定向到页面?,c#,internet-explorer,browser,navigation,C#,Internet Explorer,Browser,Navigation,我需要启动浏览器,做一些工作,然后让浏览器导航到URL(按该顺序)。 第一部分当然很简单,我有一个Process对象。我不知道以后如何将其定向到目标页面? 如何将流程视为浏览器并使其导航到所需页面? 任何帮助、指针、代码片段都将不胜感激。如果您不需要IE的实际实例,可以使用System.Windows.Forms.WebBrowser控件。如果您不需要IE的实际实例,您可以使用System.Windows.Forms.WebBrowser控件。我认为,您可以向浏览器发送javascript来运行

我需要启动浏览器,做一些工作,然后让浏览器导航到URL(按该顺序)。
第一部分当然很简单,我有一个Process对象。我不知道以后如何将其定向到目标页面?

如何将流程视为浏览器并使其导航到所需页面?
任何帮助、指针、代码片段都将不胜感激。

如果您不需要IE的实际实例,可以使用System.Windows.Forms.WebBrowser控件。

如果您不需要IE的实际实例,您可以使用System.Windows.Forms.WebBrowser控件。

我认为,您可以向浏览器发送javascript来运行浏览器并将其指向站点,而不是向浏览器发送url


不确定这是否可行,但我认为没有理由不这样做。我认为,与其向浏览器发送url,不如向其发送javascript,让其运行并将浏览器指向某个站点


不确定这是否可行,但我看不出有什么理由不可行。我对这个问题的第一反应是DDE,但它似乎已经在Windows Vista中停用,所以这是不好的。羞耻,因为它是Windows中唯一一致的进程间通信(IPC)机制…哦,我多么怀念Amiga上的Arexx

无论如何,我相信下面的方法会奏效,但不幸的是,由于它的工作方式,它会启动Internet Explorer,而不考虑配置的浏览器

  • 如果应用程序有表单,则在其上创建WebBrowser控件。将其设置为不可见,因为我们只是将其用作启动设备,而不是显示网页
  • 在代码中,在要显示网页的位置,使用以下代码:

    webBrowser1.DocumentText=“window.open(“”,'BananasAreOhSoYummy');”

  • 这样做是为了告诉网络浏览器控件,这只是伪装的IE,打开一个名为“BananasareOhsoyumy”的新窗口。因为我们给了窗口一个名称,所以我们可以使用不同的URL重复使用该行来更改特定浏览器窗口中的页面。(如果用户碰巧关闭了一个新窗口,则会打开该窗口。)


    我将考虑一种尊重用户默认浏览器选择的方法。

    我对这个问题的第一反应是DDE,但它似乎已经在Windows Vista中停用,因此这是不好的。羞耻,因为它是Windows中唯一一致的进程间通信(IPC)机制…哦,我多么怀念Amiga上的Arexx

    无论如何,我相信下面的方法会奏效,但不幸的是,由于它的工作方式,它会启动Internet Explorer,而不考虑配置的浏览器

  • 如果应用程序有表单,则在其上创建WebBrowser控件。将其设置为不可见,因为我们只是将其用作启动设备,而不是显示网页
  • 在代码中,在要显示网页的位置,使用以下代码:

    webBrowser1.DocumentText=“window.open(“”,'BananasAreOhSoYummy');”

  • 这样做是为了告诉网络浏览器控件,这只是伪装的IE,打开一个名为“BananasareOhsoyumy”的新窗口。因为我们给了窗口一个名称,所以我们可以使用不同的URL重复使用该行来更改特定浏览器窗口中的页面。(如果用户碰巧关闭了一个新窗口,则会打开该窗口。)


    我将考虑一种尊重用户默认浏览器选择的方法。

    不要启动浏览器&然后导航到页面,只需告诉操作系统您要运行URL即可。Windows将选择正确的浏览器,并将用户导航到给定的URL

    System.Diagnostics.Process.Start("http://www.StackOverflow.com");
    

    不要启动浏览器&然后导航到页面,只需告诉操作系统您要运行URL即可。Windows将选择正确的浏览器,并将用户导航到给定的URL

    System.Diagnostics.Process.Start("http://www.StackOverflow.com");
    

    如果您不需要在生产中执行此操作,可以使用WatiN之类的测试库执行此操作:

    using WatiN.Core;
    
     //Placeholder page to launch initial browser
     IE ie = new IE("http://www.google.com");
    
     DoSomeWork();
    
     //Now navigate to the page you want
     ie.GoTo("http://stackoverflow.com");
    

    如果您不需要在生产中执行此操作,可以使用WatiN之类的测试库执行此操作:

    using WatiN.Core;
    
     //Placeholder page to launch initial browser
     IE ie = new IE("http://www.google.com");
    
     DoSomeWork();
    
     //Now navigate to the page you want
     ie.GoTo("http://stackoverflow.com");
    

    实际上,我正在将其用于应用程序的桌面版本。对于web应用程序,我需要使用m/c上的默认浏览器。MohitC:如果这是“对于web应用程序”,那么您如何在最终用户的机器上获取流程对象?这是否在受控(内部网)环境中?我显然不理解这种情况。该应用程序将在本地运行,但需要生成一个浏览器,因此获取进程对象的工作原理与承载winform的应用程序的工作原理相同。实际上,我正在将其用于该应用程序的桌面版本。对于web应用程序,我需要使用m/c上的默认浏览器。MohitC:如果这是“对于web应用程序”,那么您如何在最终用户的机器上获取流程对象?这是否在受控(内部网)环境中?我显然不理解这种情况。该应用程序将在本地运行,但需要生成一个浏览器,因此获取流程对象的工作原理与承载winform的应用程序的工作原理相同。问题是以后如何使用流程对象,使其表现得像浏览器一样。发送URL或JS是同一回事。在启动流程时,您不能将其作为参数传入吗?我想我可能误解了你的要求,这里不可能有这种选择。正如我在问题1中所说的那样。需要启动浏览器2。做一些工作。让浏览器按该顺序导航到URL。啊哈…这高于我的薪资等级,抱歉。问题是以后如何使用Process对象,使其行为与浏览器一样。发送URL或JS是同一回事。在启动流程时,您不能将其作为参数传入吗?我想我可能误解了你的要求,这里不可能有这种选择。正如我在问题1中所说的那样。需要启动浏览器2。做一些工作。使浏览器导航到中的URL