2012-11-12 13 views
5

Ich versuche eine URL in Chrome von C# zu öffnen und den Hash (#) zu behalten. Beispiel:C# URL in Chrome mit Hash (#) öffnen

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

Alles nach und einschließlich der Raute (#) verloren, wenn der Prozess gestartet wird. Ich kann Chrome laufen manuell über die Eingabeaufforderung mit dem Hash in der URL

C: \ Program Files (x86) \ Google \ Chrome \ Application> chrome.exe 127.0.0.1/test.html#foobar

und der Hash bleibt erhalten, wenn der Standardbrowser auf IE oder FireFox gesetzt ist.

Alle Vorschläge werden sehr geschätzt. Vielen Dank!

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> 

Hinweis: Ich möchte nicht der Benutzer davon ausgehen will, Chrom verwenden, muss ich dies in arbeiten, was auch immer der Anwender Standard-Browser ist. Es funktioniert, wenn der Standardbrowser des Benutzers IE oder Fire Fox ist, aber der Hash ist verloren, wenn der Standardbrowser des Benutzers Chrome ist.

+0

Versuchen Sie explizit, Chrome im Befehl auszuführen? –

Antwort

1

Der Befehl zum Öffnen einer URL im Standardbrowser lautet start myURL, nicht nur myURL.

Sie müssen den Befehl auszuführen:

start "127.0.0.1/test.html#foobar"

Beachten Sie, dass die Anführungszeichen im String sein müssen, nicht in C#; die C# -Code für das wäre:

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

Ich brauche das in jedem Browser zu arbeiten, den der Benutzer als Standard festgelegt hat. Ich möchte Nutzer nicht dazu zwingen, Chrome zu verwenden. Ich benötige sie nur, um den Hash in die URL zu geben, wenn sie Chrome verwenden. – SteveHansen

+0

@SteveHansen Warum hast du die Frage speziell als chrome markiert, als ob du sie in chrome öffnest, und in deinem Beispiel 'chrome.exe' verwendest, was du getan hast, als du die Shell direkt benutzt hast? Bestimmen Sie zuerst, was Sie in der Shell tun möchten, und sorgen Sie dann dafür, dass Sie es in C# übersetzen. Auf jeden Fall habe ich die Antwort entsprechend aktualisiert. – Servy

+0

Wie ich in der Frage erklärt habe, funktioniert das in IE und FireFox. Dies ist problematisch, wenn der Standardbrowser des Benutzers auf Chrome festgelegt ist. Das Problem besteht darin, eine URL zu öffnen, die in Chrome einen Hash enthält. Das Beispiel der Verwendung der Shell zeigt direkt, dass der Hash in Chrome beibehalten werden kann, aber wenn er über C# (wie abgebildet) ausgeführt wird, ist der Hash verloren. – SteveHansen

0

Mein Standardbrowser ist Chrom und dieser Befehl funktioniert perfekt richtig:

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

Die „#gopro“ bleibt erhalten.

+0

Welche Version von Windows und .Net Framework verwenden Sie? – SteveHansen

+0

Ich bin auf Windows 7. Getestet nur mit .NET 2, 3, 3.5 und 4. Alle hatten das gleiche Ergebnis. Funktioniert es nicht korrekt, wenn Sie diese genaue Codezeile mit Ihrer Konfiguration ausführen? –

+0

Leider nein, es funktioniert nicht für mich. Ich führe Windows 8, Chrome 23.0.1271.97.Ich habe auf einigen verschiedenen Win8 Maschinen mit dem gleichen Ergebnis getestet. – SteveHansen