2012-11-12 20 views
5

Próbuję otworzyć adres URL w Chrome z C# i zachować hash (#). przykład:C# Otwórz adres URL w chrome z hash (#)

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

późniejszej włącznie hash (#) traci się na początku procesu. mogę uruchomić Chrome ręcznie z poziomu wiersza poleceń w tym mieszania w url

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

i hash jest zachowywany, gdy domyślna przeglądarka jest ustawiona na IE lub FireFox.

Wszelkie sugestie są bardzo mile widziane. Dzięki!

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> 

Uwaga: Nie chcę zakładać użytkownik chce korzystać z Chrome, muszę to do pracy w co kiedykolwiek domyślną przeglądarką użytkowników jest. Działa, gdy domyślną przeglądarką użytkownika jest IE lub Fire Fox, ale skrót jest tracony, gdy domyślną przeglądarką użytkowników jest Chrome.

+0

Spróbuj wyraźnie uruchomić Chrome w poleceniu? –

Odpowiedz

1

Polecenie otwarcia adresu URL w domyślnej przeglądarce to start myURL, a nie tylko myURL.

Musisz wykonać polecenie:

start "127.0.0.1/test.html#foobar"

Zauważ, że cytaty muszą być w otrzymanym ciągiem, nie w języku C#; kod C# dla że byłoby:

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

Potrzebuję tego do działania w dowolnej przeglądarce, którą użytkownik ustawił jako domyślną. Nie chcę zmuszać użytkowników do korzystania z przeglądarki Chrome, wystarczy, że przekażesz skrót do URL-a, w którym używają przeglądarki Chrome. – SteveHansen

+0

@SteveHansen Dlaczego więc konkretnie oznaczyłeś pytanie jako chrome, tak jak w przypadku otwierania go w chrome, i używasz 'chrome.exe' w swoim przykładzie tego, co zrobiłeś, gdy używałeś powłoki bezpośrednio? Najpierw określ, co chcesz zrobić w powłoce, a następnie przejmuj się tłumaczeniem na C#. W każdym razie zaktualizowałem odpowiedź odpowiednio. – Servy

+0

Jak wyjaśniłem w pytaniu, działa to w IE i FireFox. Jest to problematyczne, jeśli domyślna przeglądarka użytkowników jest ustawiona na Chrome. Problem dotyczy otwierania adresu URL zawierającego skrót w Chrome. Przykład rozpoczęcia korzystania z powłoki bezpośrednio ilustruje, że hash może być zachowany w Chrome, ale po uruchomieniu przez C# (jak pokazano), skrót jest tracony. – SteveHansen

0

domyślną przeglądarką jest chrom i ta komenda działa perfekcyjnie prawidłowo:

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

W „#gopro” pozostaje nienaruszona.

+0

Jaką wersję systemu Windows i .Net Framework używasz? – SteveHansen

+0

Jestem na Windows 7. Po prostu przetestowałem go z .NET 2, 3, 3.5 i 4. Wszystkie miały taki sam wynik. Czy nie działa poprawnie, gdy wykonasz dokładną linię kodu w swojej konfiguracji? –

+0

Niestety nie, to nie działa dla mnie. Używam Windows 8, Chrome 23.0.1271.97.Przetestowałem na kilku różnych maszynach Win8 z tym samym wynikiem. – SteveHansen

Powiązane problemy