2012-11-12 99 views
5

我想在c#中打开Chrome中的网址并保留哈希(#)。 实施例:c#在哈希中打开网址(#)

string command = "http://127.0.0.1/test.html#foobar"; 
ProcessStartInfo ps = new ProcessStartInfo(command) { UseShellExecute = true }; 
Process.Start(ps); 

后一切以及包括该井号(#)被启动进程时丢失。我可以包括在URL中的散列从命令提示符手动运行的Chrome

C:\ Program Files文件(x86)的\谷歌\浏览器\应用程序>的chrome.exe 127.0.0.1/test.html#foobar

当默认浏览器设置为IE或FireFox时,哈希值将保留。

任何建议,非常感谢。谢谢!

的test.html:

<!DOCTYPE HTML> 
<html> 
<head> 
    <title>Test</title> 
</head> 
<body> 
<h1>Test</h1> 
<div style="height:1000px; background: #ccc; width: 100%"></div> 
<a name="foobar">foobar</a> 
</body> 
</html> 

注:我不想设定用户想要使用Chrome,我需要这在以往用户的默认浏览器是什么工作。当用户的默认浏览器是IE或Fire Fox时,它可以工作,但当用户默认浏览器是Chrome时,散列会丢失。

+0

尝试在命令中显式运行Chrome吗? –

回答

1

在默认浏览器中打开URL的命令是start myURL,而不仅仅是myURL

你需要执行以下命令:

启动“127.0.0.1/test.html#foobar”

注意,报价必须得到的字符串中,不在C#中;对于C#代码是:

string command = @"start" + @"""127.0.0.1/test.html#foobar"""; 
+0

我需要这个工作在用户设置为默认浏览器的地方。我不想强制用户使用Chrome,我只是需要它将哈希传递到他们使用Chrome的url。 – SteveHansen

+0

@SteveHansen那么为什么你特意将问题标记为chrome,就像在chrome中打开它一样,并且在你的例子中使用'chrome.exe'来直接使用shell?首先确定你想在shell中做什么,然后担心将它翻译成C#。无论如何,我相应地更新了答案。 – Servy

+0

正如我在问题中解释的,这在IE和FireFox中有效。如果用户的默认浏览器设置为Chrome,则会出现问题。该问题特定于在Chrome中打开包含散列的网址。直接使用shell启动的例子说明了哈希可以保留在Chrome中,但是当通过C#运行时(如图所示),哈希将丢失。 – SteveHansen

0

我的默认浏览器是Chrome和该命令完全正确的工作原理:

System.Diagnostics.Process.Start(@"http://www.bitterminion.com/excel-launchpad#gopro"); 

的 “#gopro” 保持不变。

+0

您运行的是Windows和.Net Framework的哪个版本? – SteveHansen

+0

我在Windows 7上。刚刚用.NET 2,3,3.5和4进行了测试。所有结果都一样。当您使用您的配置执行完整的代码行时,它不能正常工作吗? –

+0

不幸的是,它不适合我。我正在运行Window 8,Chrome 23.0.1271.97。我在几台不同的Win8机器上测试过相同的结果。 – SteveHansen