如果已经打开,则使用c#应用程序刷新浏览器中的选项卡

时间:2014-07-29 08:51:24

标签: c# visual-studio-2010

我在我的应用程序中打开一个html文件,如

string browserPath = GetBrowserPath();
Process process = new Process();
process.StartInfo = new ProcessStartInfo(browserPath);
process.StartInfo.Arguments = "\"" + path_htmlFile + "\"";
process.Start();

但如果我再次调用它,我的浏览器中只会显示一个新选项卡而不是刷新第一个选项卡。 我怎么能解决这个问题?

我在Visual Studio 2010中使用c#

1 个答案:

答案 0 :(得分:0)

您可以激活浏览器应用程序,然后向其发送刷新密钥。实现此目的的一种方法是使用SetForegroundWindow Windows API函数和System.Windows.Forms.SendKeys.SendWait方法。

using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;

class Program
{
    static void Main(string[] args)
    {
        var browserPath = @"chrome";
        RefreshBrowserTab(browserPath);
    }

    private static void RefreshBrowserTab(string browserPath)
    {
        var processName = Path.GetFileNameWithoutExtension(browserPath);
        var processes = Process.GetProcessesByName(processName);
        foreach (var process in processes)
        {
            SetForegroundWindow(process.MainWindowHandle);
        }
        SendKeys.SendWait("^r");
    }

    [DllImport("user32.dll")]
    private static extern bool SetForegroundWindow(IntPtr hWnd);
}

或者,您可以使用Windows Scripting Host的WshShellObject.AppActivate和WshShellObject.SendKeys方法实现此目的。请参阅http://msdn.microsoft.com/en-us/library/ahcz2kh6(v=vs.84).aspx