2017-03-07 542 views
0

有沒有辦法獲得進程名/一個蒸汽遊戲的ID通過啓動:獲取進程ID或進程名通過蒸汽推出蒸汽賽後:// rungameid /#

Process.Start("steam://rungameid/#"); 

正如預期的以上方法返回Steam.exe。

+0

也許這裏前3個鏈接之一可以幫助►[https://www.google.ie/webhp?hl=zh-CN&sa=X&ved=0ahUKEwiB8rv01sTSAhVCC8AKHeG_BukQPAgD#safe=active&hl=zh-CN&q=c%23+get+process+id& *](https://www.google.ie/webhp?hl=zh-CN&sa=X&ved=0ahUKEwiB8rv01sTSAhVCC8AKHeG_BukQPAgD#safe=active&hl=zh-CN&q=c%23+get+process+id&),或者這也可以幫助►[http:/ /stackoverflow.com/questions/3003975/how-to-get-the-current-processid](http://stackoverflow.com/questions/3003975/how-to-get-the-current-processid) – Nope

+0

Process.Start從System.Diagnostics返回一個具有id屬性的Process對象。這是我相信的進程ID(https://msdn.microsoft.com/en-us/library/system.diagnostics.process(v=vs.110).aspx) – ojf

+0

不一般。例如,這可能會啓動一個啓動器,然後繼續運行實際的遊戲可執行文件。您可以通過追蹤子進程啓動來解決該問題,但通常情況下,您應該想知道爲什麼需要此操作。當然,在這種情況下,必須有辦法檢測正在運行的遊戲,因爲Steam有一個,但可能涉及到Steam API本身。 –

回答

1

每場比賽都有下HKCU\SOFTWARE\Valve\Steam\Apps

在註冊表中的一個關鍵你應該能夠檢查你的遊戲從那裏的Installed值,然後運行使用steam://rungameid/#的遊戲,然後等待RunningUpdating值改爲1,再改爲0

這使得跟蹤遊戲執行成爲可能,但是,你仍然不能直接獲得遊戲的進程ID。

1

一般來說,沒有。

Steam僅使用自定義URI前綴,它允許您指定哪個應用程序將爲該請求提供服務。但是它並不爲每個遊戲創建一個新的前綴,而是由steam.exe來處理,它決定了實際運行的應用程序。當然,蒸汽本身並不會跟蹤它運行的遊戲,但我認爲它只是跟蹤它們的進程ID,可能有一些Steam集成或Steam疊加註入的影響來跟蹤使用啓動器的遊戲。如果你不願意與其他應用程序的私有相混淆,我認爲沒有任何簡單的方法來保存這些信息。

可能有些情況下您有其他解決方案;例如如果您不介意可能同時運行多個Steam遊戲,則可以嘗試查找具有Steam疊加層的所有流程,但這些流程相當具體 - 它們可能適合您,但對其他用戶無效。

0

由於新流程不會作爲蒸汽的子流程啓動,因此無法推導出其ID。你可以嘗試的是導出當前正在運行的遊戲via the API - 然後搜索所有正在運行的進程以查找其名稱。 API應該通過gameextrainfo屬性暴露遊戲名稱,該屬性應該與進程的名稱相同(不過未經測試)。