2017-09-04 76 views
0

我的例子類似於此:啓動瀏覽器進程,並通過進程ID將其關閉後

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

如何獲得進程ID過程開始之前?或者我可以設置一些Guid作爲將會持續的另一個標識符嗎?

+0

你想傳遞一個出了在顯示網頁的網站瀏覽器的進程ID瀏覽器實例(會依賴於瀏覽器)還是想從應用程序中打開網頁,然後關閉所有創建的實例? – Michael

+0

@Michael我想要打開這樣的網址:http://webpage.com?processId=123123其中processId是標籤的URL標識的URL打開。 – karaxuna

+0

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

回答

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

我不明白 – karaxuna

+0

這是一個如何獲取剛剛啓動的進程ID的示例。 –

0

沒有測試

我想你應該嘗試以下方法:

  1. 知道哪些瀏覽器是在目標計算機上的默認瀏覽器。我假設firefox。
  2. 測試瀏覽器當前是否正在運行。你可以用var instances = Process.FindByName("firefox.exe")來做到這一點 - 你可能需要本地firefox安裝的完整路徑。之後instances包含當前正在運行的所有firefox實例的句柄。

從這裏,我們有三種情況包括:

  1. instances是一個空數組。這意味着瀏覽器沒有運行。然後你用var processHandle = Process.Start("firefox.exe")啓動瀏覽器。然後你運行下面的命令行$"firefox.exe -new-tab http://myurl.com/?id={processHandle.Id}"(希望)能夠識別出firefox的一個實例已經在運行,並打開現有實例中的頁面。 (執行該命令,也可以用過程來完成,但你必須不啓動它來創建一個流程實例,在StartInfo specifing參數並啓動它,然後)

  2. instances只包含一個條目。因此,我們所要做的就是運行與案例1相同的命令行:$"firefox.exe -new-tab http://myurl.com/?id={instances[0].Id}"

  3. instances包含多個條目。這意味着多個firefox窗口打開。我沒有解決這個問題。你必須檢查-new-tab選擇目標總是相同的窗口或不...

相關問題