在默认浏览器中打开Web文档是一个已经回答了minnion次的qeustion。但我对这个问题有一个转折:
如何在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);
}
它只会得到关注。
答案 0 :(得分:2)
首先,包含要刷新的页面的浏览器选项卡必须是选定的选项卡。根据{{3}},您无法激活包含特定网址的标签。您可以this SO question但无法选择所需的标签。
因此,假设选项卡已被选中,您只需find all the urls of the opened tabs并向其发送类似于find and activate the browser's window的组合键。例如,只有ctrl+c
而不是ctr+l
,您可以发送enter
(这会将光标放在地址字段上)和ctrl+w
(这将刷新页面)。
或者,至少对于Firefox,您可以发送一个{{1}},它会关闭当前所选的标签,然后按照您的代码已经打开一个新页面,在您的情况下将是完全相同的页面你刚关闭了。
或者,您可以在新的浏览器实例(而不是新标签页)中打开您的页面。当您想要刷新它时,您可以按名称找到该浏览器窗口并将其关闭。然后重新打开一个新的浏览器窗口。如果您感兴趣的标签可能不是浏览器中的选定标签,那么这将是一个解决方案