在默认浏览器中打开或刷新HTML文件

本文关键字:刷新 HTML 文件 默认浏览器 | 更新日期: 2023-09-27 18:27:52

在默认浏览器中打开Web文档是一个已经被回答了很小次数的问题。但我有一个问题:

我如何在C#中在默认浏览器中打开或刷新html文档。

如果我尝试这样的东西:

private Process ShowFile(string htmlFilename)
{
var myProcess = new Process();
    try
    {
        // true is the default, but it is important not to set it to false
        myProcess.StartInfo.UseShellExecute = true;
        myProcess.StartInfo.FileName = htmlFilename;
        myProcess.Start();
    }
    catch (Exception e)
    {
    }
    return myProcess;
}

每次都会打开一个新窗口。

*编辑*

我试过了,但浏览器不刷新

public delegate bool EnumThreadWindowsCallback(int hWnd, int lParam);
    [DllImport("user32.dll")]
    static extern bool SetForegroundWindow(IntPtr hWnd);
    [DllImport("user32.dll")]
    static extern bool EnumWindows(EnumThreadWindowsCallback callback, IntPtr extraData);
    [DllImport("user32.dll")]
    static extern int GetWindowText(int hWnd, StringBuilder text, int count);
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    static public extern IntPtr GetForegroundWindow();
    [DllImport("user32.dll")]
    static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);

    private bool FindWindowByRx(int hWnd, int lParam)
    {
        Regex pattern = new Regex("Seneste nyt", RegexOptions.IgnoreCase);
        StringBuilder windowTitle = new StringBuilder(256);
        GetWindowText(hWnd, windowTitle, 255);
        if (pattern.IsMatch(windowTitle.ToString()))
        {
            SetForegroundWindow(new IntPtr(hWnd));
            return false; // abort search
        }
        else
        {
            return true; // keep on searching
        }
    }
    private bool ActivateWindow()
    {
        return EnumWindows(new EnumThreadWindowsCallback(FindWindowByRx), new IntPtr());
        uint KEYEVENTF_KEYUP = 2;
        byte VK_CONTROL = 0x11;
        byte VK_F5= 0x74;
        keybd_event(VK_CONTROL, 0, 0, 0);
        keybd_event(VK_F5, 0, 0, 0);             
        keybd_event(VK_F5, 0, KEYEVENTF_KEYUP, 0);
        keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
    }

它只会得到关注。

在默认浏览器中打开或刷新HTML文件

首先,包含要刷新的页面的浏览器选项卡必须是选定的选项卡。根据这个SO问题,您无法激活包含特定url的选项卡。您可以找到打开的选项卡的所有URL,但无法选择所需的选项卡。

因此,假设选项卡已经被选中,您只需找到并激活浏览器的窗口,并向其发送类似于从其他进程获取所选文本的键组合。例如,您只能为Firefox发送ctr+l(这将光标放在地址字段上)和enter(这将刷新页面),而不是ctrl+c

或者,至少对于Firefox,您可以发送一个ctrl+w,关闭当前选定的选项卡,然后像您的代码一样打开一个新页面,在您的情况下,这将与您刚刚关闭的页面完全相同。

或者,您可以在新的浏览器实例(而不是新的选项卡)中打开页面。当你想刷新它时,你可以按名称找到该浏览器窗口并关闭它。然后重新打开一个新的浏览器窗口。这将是一个解决方案,以防您感兴趣的选项卡可能不是浏览器中当前选定的选项卡