From 4bf65c6d7c979625851a77a08a20e8404b0460df Mon Sep 17 00:00:00 2001 From: Gurkengewuerz Date: Wed, 1 Apr 2020 20:55:30 +0200 Subject: [PATCH] use java 9 functions to list processes --- .../arma3launcher/steam/SteamTimer.java | 3 +- .../arma3launcher/utils/SteamUtils.java | 33 +++++++++---------- gui/src/main/resources/lang_de_DE.properties | 2 +- pom.xml | 2 +- 4 files changed, 18 insertions(+), 22 deletions(-) diff --git a/gui/src/main/java/de/mc8051/arma3launcher/steam/SteamTimer.java b/gui/src/main/java/de/mc8051/arma3launcher/steam/SteamTimer.java index e15c340..0d18742 100644 --- a/gui/src/main/java/de/mc8051/arma3launcher/steam/SteamTimer.java +++ b/gui/src/main/java/de/mc8051/arma3launcher/steam/SteamTimer.java @@ -54,8 +54,7 @@ public class SteamTimer extends TimerTask { arma_running = SteamUtils.findProcess("arma3.exe") || SteamUtils.findProcess("arma3_x64.exe") - || SteamUtils.findProcess("arma3battleye.exe") - || SteamUtils.findProcess("arma3launcher.exe"); + || SteamUtils.findProcess("arma3battleye.exe"); logger.debug(arma_running ? "ArmA process found" : "ArmA process not found"); diff --git a/gui/src/main/java/de/mc8051/arma3launcher/utils/SteamUtils.java b/gui/src/main/java/de/mc8051/arma3launcher/utils/SteamUtils.java index 1a59675..af6cce4 100644 --- a/gui/src/main/java/de/mc8051/arma3launcher/utils/SteamUtils.java +++ b/gui/src/main/java/de/mc8051/arma3launcher/utils/SteamUtils.java @@ -1,29 +1,26 @@ package de.mc8051.arma3launcher.utils; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.util.ArrayList; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.Optional; /** * Created by gurkengewuerz.de on 23.03.2020. */ public class SteamUtils { - public static boolean findProcess(String findProcess) throws IOException { - String filenameFilter = "/nh /fi \"Imagename eq "+findProcess+"\""; - String tasksCmd = System.getenv("windir") +"/system32/tasklist.exe "+filenameFilter; + private static final Logger logger = LogManager.getLogger(SteamUtils.class); - Process p = Runtime.getRuntime().exec(tasksCmd); - BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); - - ArrayList procs = new ArrayList(); - String line = null; - while ((line = input.readLine()) != null) - procs.add(line); - - input.close(); - - return procs.stream().anyMatch(row -> row.contains(findProcess)); + public static boolean findProcess(String findProcess) { + Optional p = ProcessHandle.allProcesses() + .filter(processHandle -> processHandle.info().command().isPresent()) + .filter(process -> process.info().command().get().toLowerCase().endsWith(findProcess)).findFirst(); + if(p.isEmpty()) return false; + logger.debug("Found process {}", findProcess); + logger.debug(" PID {}", p.get().pid()); + logger.debug(" Name {}", p.get().info().command()); + logger.debug(" User {}", p.get().info().user()); + return true; } } diff --git a/gui/src/main/resources/lang_de_DE.properties b/gui/src/main/resources/lang_de_DE.properties index 7844201..f4bf5bf 100644 --- a/gui/src/main/resources/lang_de_DE.properties +++ b/gui/src/main/resources/lang_de_DE.properties @@ -71,7 +71,7 @@ use64bitclient_desc=Startet Arma3 mit der f use_workshop=Versuche Workshop Inhalte zu nutzen use_workshop_desc=Bei großen Modspacks versucht der Client bereits heruntergeladene Workshop Inhalte, die gleich sind, zu kopieren um so den Download schneller zu gestalten warning=Warnung -warning_workshop=Der Client versucht sein bestes die gleichen Dateien zu finden, jedoch kann es vorkommen das es nicht die identischen Dateien sind. Im Falle eines Fehlgeschlagenem Syncen mit dieser Option, solltest du sie deaktivieren und ohne diese Option erneut syncen. Ebenfalls könnte es zu kurzen Performance einbußen kommen.Der Client versucht sein bestes die gleichen Dateien zu finden, jedoch kann es vorkommen das es nicht die identischen Dateien sind. Im Falle eines fehlgeschlagenem Syncen mit dieser Option, solltest du sie deaktivieren und ohne diese Option erneut syncen. Ebenfalls könnte es zu kurzen Performance einbußen kommen. +warning_workshop=Der Client versucht sein bestes die gleichen Dateien zu finden, jedoch kann es vorkommen das es nicht die identischen Dateien sind. Im Falle eines fehlgeschlagenem Syncen mit dieser Option, solltest du sie deaktivieren und ohne diese Option erneut syncen. Ebenfalls könnte es zu kurzen Performance einbußen kommen. window_desc=Ist diese Option aktiv, wird Arma 3 im Fenstermodus gestartet. world_desc=Hier kann eine Karte eingetragen werden, die geladen und in den Menüs als Hintergrund angezeigt werden soll (z.B. „altis“ oder „stratis“ – ohne Anführungszeichen!). Ist das Feld leer, wird keine Karte während des Startens geladen und der Start von Arma 3 ist entsprechend schneller. path_not_set=ArmA oder Mod Verzeichnis nicht gesetzt diff --git a/pom.xml b/pom.xml index 617ddfe..3441dac 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - 0.1.1003 + 0.1.1004 de.mc8051