nicht getestet
ich glaube, Sie Folgendes versuchen sollte:
- wissen, welche Browser als Standardbrowser auf dem Zielcomputer ist. Ich nehme Firefox an.
- Testen Sie, ob der Browser gerade ausgeführt wird. Sie können dies mit
var instances = Process.FindByName("firefox.exe")
tun - Sie benötigen möglicherweise den vollständigen Pfad zur lokalen Firefox-Installation. Danach enthält instances
Handles für alle Firefox-Instanzen, die gerade ausgeführt werden.
Von hier an uns zu decken drei Fälle haben:
instances
ist ein leeres Array. Dies bedeutet, dass der Browser nicht ausgeführt wird. Dann starten Sie den Browser mit var processHandle = Process.Start("firefox.exe")
. Dann führen Sie die folgende Befehlszeile aus $"firefox.exe -new-tab http://myurl.com/?id={processHandle.Id}"
, die (hoffentlich) erkennt, dass eine Instanz von Firefox bereits ausgeführt wird und die Seite innerhalb der vorhandenen Instanz öffnet. (Die Ausführung dieses Befehls kann auch mit Verfahren erfolgen, aber Sie werden eine Prozessinstanz erstellen müssen, ohne es zu starten, specifing die Argumente in StartInfo und starten Sie es dann)
instances
enthält genau einen Eintrag. Alles, was wir tun müssen, ist die gleiche Befehlszeile wie im ersten Fall: $"firefox.exe -new-tab http://myurl.com/?id={instances[0].Id}"
instances
enthält mehrere Einträge. Das bedeutet, dass mehrere Firefox-Fenster geöffnet sind. Ich habe keine Lösung dafür. Sie werden, wenn die -new-tab
Option Ziele zu überprüfen, haben immer das gleiche Fenster oder nicht ...
Haben Sie den Prozess-ID des Browsers übergeben möchten, dass die Webseite auf der Website zeigt, die in gezeigt wird, die Browser-Instanz (wäre Browser-abhängig) oder möchten Sie Webseiten von Ihrer Anwendung aus öffnen und später alle erstellten Instanzen schließen? – Michael
@Michael Ich möchte URL wie folgt öffnen: http://webpage.com?processId=123123 Dabei ist ProcessId ID der Registerkarte, wo URL geöffnet. – karaxuna
@karaxuna int processId = Prozess.GetCurrentProcess(). Id; –