如何檢查Windows上是否有某個.exe程序正在運行(正在運行)?檢查一些exe程序是否在windows上運行
我正在做更新一個.exe程序的java應用程序。所以,如果某個客戶端使用該exe程序,我的應用程序會要求關閉exe程序,並在關閉後自動替換爲新的.exe文件。
如何檢查Windows上是否有某個.exe程序正在運行(正在運行)?檢查一些exe程序是否在windows上運行
我正在做更新一個.exe程序的java應用程序。所以,如果某個客戶端使用該exe程序,我的應用程序會要求關閉exe程序,並在關閉後自動替換爲新的.exe文件。
您可以在您的Java程序中運行以下語句。在此之前,您需要知道task manager
中的任務名稱。假設你想看到MS-Word正在運行。然後運行MS-Word,進入任務管理器,在進程選項卡下,您應該看到一個名爲word.exe
的進程。找出您的目標進程的名稱。一旦你的,你只要運行下面的代碼:
String line;
String pidInfo ="";
Process p =Runtime.getRuntime().exec(System.getenv("windir") +"\\system32\\"+"tasklist.exe");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
pidInfo+=line;
}
input.close();
if(pidInfo.contains("your process name"))
{
// do what you want
}
+1的完整代碼:P – TheLostMind
謝謝Tharindu Rusira,這有助於我解決問題! –
而不是將所有行連接在一起,檢查'while.'循環內的'line.contains(processName)'可能會更高效。 – 4castle
U可以嘗試以下方法:
運行RT =調用Runtime.getRuntime(); 並執行「任務列表」
tasklist返回當前正在執行的進程的列表(如任務管理器的進程選項卡中所示)。
感謝TheLostMind,這是非常簡單的方法。 –
下面是用於檢查一個完整的代碼,如果一個應用程序是Windows
系統或不運行:
import java.awt.*;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;
public class ApplicationUtilities
{
public static void runApplication(String applicationFilePath) throws IOException, InterruptedException
{
File application = new File(applicationFilePath);
String applicationName = application.getName();
if (!isProcessRunning(applicationName))
{
Desktop.getDesktop().open(application);
}
}
// http://stackoverflow.com/a/19005828/3764804
private static boolean isProcessRunning(String processName) throws IOException, InterruptedException
{
ProcessBuilder processBuilder = new ProcessBuilder("tasklist.exe");
Process process = processBuilder.start();
String tasksList = toString(process.getInputStream());
return tasksList.contains(processName);
}
// http://stackoverflow.com/a/5445161/3764804
private static String toString(InputStream inputStream)
{
Scanner scanner = new Scanner(inputStream, "UTF-8").useDelimiter("\\A");
String string = scanner.hasNext() ? scanner.next() : "";
scanner.close();
return string;
}
}
例如,你可以使用runApplication()
方法只能運行時,它尚未運行的應用程序:
ApplicationUtilities.runApplication("C:\\Program Files (x86)\\WinSCP\\WinSCP.exe");
同樣的原理適用於刪除可執行文件。
檢查此問題:[如何獲得當前打開的窗口/過程與Java的列表?](http://stackoverflow.com/questions/54686/how-to-get-a-list-of-current- open-windows-process-with-java) – Renan
關於通用計算的問題在Stack Overflow上是無關緊要的。我建議你試試你的運氣[超級用戶](http://superuser.com) – 2013-09-25 12:52:55