none
请教一个调用IE打开URL的问题 RRS feed

  • 问题

  • 我写的C#的代码:

                        System.Diagnostics.ProcessStartInfo si = new System.Diagnostics.ProcessStartInfo();
                        si.Verb = "open";
                        si.FileName = "iexplore.exe";
                        si.Arguments = sUrl;
                        si.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized;
                        System.Diagnostics.Process.Start(si);

    就是调用IE去打开一个指定的URL地址,打开是成功的。但是我发现,在IE7、8、9下,用这种方法永远都是新打开一个IE窗口,而不是在同一个窗口里面打开新的页签。

    我是希望在每次执行这段程序的时候,能够在已经打开的IE窗口中创建新的页签,而不是打开新的IE窗口,请问这个能实现吗?


    da jia hao!
    2011年4月27日 7:19

答案

全部回复

  • Process.Start() 永远都是开启一个新的进程,除非这个进程自己做了单实例处理,否则,一定会产生另一个进程实例。如果想在已经打开的 IE 中打开 URL,最简单的办法就是利用 ShellExecute。详细情况可以查看 Win32 API 中的 ShellExecute。

    您也可以不妨一试,把 ProcessStartInfo.FileName 直接改成  URL 试试看,然后把  ProcessStartInfo.UseShellExeucte 设置为 true。也许会达到您要的效果,但这样做的话,打开的是默认浏览器,不一定是 IE。


    Mark Zhou
    2011年4月27日 7:56
  • Process.Start() 永远都是开启一个新的进程,除非这个进程自己做了单实例处理,否则,一定会产生另一个进程实例。如果想在已经打开的 IE 中打开 URL,最简单的办法就是利用 ShellExecute。详细情况可以查看 Win32 API 中的 ShellExecute。

    您也可以不妨一试,把 ProcessStartInfo.FileName 直接改成  URL 试试看,然后把  ProcessStartInfo.UseShellExeucte 设置为 true。也许会达到您要的效果,但这样做的话,打开的是默认浏览器,不一定是 IE。


    Mark Zhou
    谢谢,请问ShellExecute在C#里面怎么用?

    这句话看不懂:

    ProcessStartInfo..::.UseShellExecute 属性 该值指示是否使用操作系统外壳程序启动进程

    使用外壳启动和不使用外壳启动有何不同?

     

     

     

    2011年4月27日 8:10
  • 我用了你说的那个方法,将UseShellExecute设置为ture,此时的确是不会打开新的IE窗口了,但是:

     

    如果是IE9,不会创建新的页签。即,每次运行这段程序,它总会在之前打开的页签上打开我指定的URL,这导致我原本已经打开的页签内容被冲掉!

    在IE8下,没有这个问题,它的确会每次都创建一个新的页签。


    da jia hao!
    2011年4月27日 8:19
  • 你好:)

    不妨在IE9中进行设置一下:

    Internet Options=>Tabs (Settings)按钮点击一下,然后在弹出的对话框中设置一下:都设置成“打开到新标签(Open to a new Tab),或者类似选项。


    如果你有其它意见或私下交流,请点击此处
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    • 已标记为答案 liubin 2011年5月10日 4:25
    2011年5月9日 6:51
    版主