2017-09-04 1 views
0

Mein Beispiel zu dieser recht ähnlich sieht:Browser starten Prozess und Pass Prozess-ID schließen Sie es später

Process.Start("http://www.webpage.com?processId="); 

Wie Prozess-ID zu erhalten, bevor Prozess beginnt? Oder kann ich einige Guid als eine andere Kennung festlegen, die beibehalten wird?

+0

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

+0

@Michael Ich möchte URL wie folgt öffnen: http://webpage.com?processId=123123 Dabei ist ProcessId ID der Registerkarte, wo URL geöffnet. – karaxuna

+0

@karaxuna int processId = Prozess.GetCurrentProcess(). Id; –

Antwort

6
Process p = Process.Start("cmd.exe"); 
int processId = p.Id; 
+0

Ich verstehe nicht – karaxuna

+0

Dies ist ein Beispiel dafür, wie Sie die ID des gerade gestarteten Prozesses erhalten. –

0

nicht getestet

ich glaube, Sie Folgendes versuchen sollte:

  1. wissen, welche Browser als Standardbrowser auf dem Zielcomputer ist. Ich nehme Firefox an.
  2. 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:

  1. 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)

  2. 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}"

  3. 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 ...

Verwandte Themen