2012-10-21 73 views
0

我正在使用Scala,我無法找到能夠從Processname中獲得PrcoessID的東西。無論是Java,Scala還是Winapi。從進程名稱獲取進程ID

目前我使用FindWindowAGetWindowThreadProcessId,但我喜歡的東西,會給我一個陣列

val process: Array[Int] = GetProcessIdFromExeName("Notepad") 

所以,如果我有記事本的10個實例,我可以訪問它們process(0-9)

我知道在.NET中存在類似的東西,但是在WINAPI或Java/Scala中有類似的東西嗎?

回答

1

最簡單的方法是運行tasklist並解析輸出。看到這個資源以供參考:

https://stackoverflow.com/questions/53489/how-do-you-list-all-processes-on-the-command-line-in-windows

您還可以使用WMI。編寫執行WMI查詢並打印輸出的JScript或VBScript非常簡單,因此您可以從Java或Scala進程運行它並分析輸出。 WMI提供比tasklist更多的選項。

如果您選擇WMI,您也可以使用其中一個現有的java-to-com庫來調用它。 JaWin,Jintegra,JInterop。