use java 9 functions to list processes

This commit is contained in:
Niklas 2020-04-01 20:55:30 +02:00
parent 43726ad2a9
commit 4bf65c6d7c
4 changed files with 18 additions and 22 deletions

View File

@ -54,8 +54,7 @@ public class SteamTimer extends TimerTask {
arma_running = SteamUtils.findProcess("arma3.exe") arma_running = SteamUtils.findProcess("arma3.exe")
|| SteamUtils.findProcess("arma3_x64.exe") || SteamUtils.findProcess("arma3_x64.exe")
|| SteamUtils.findProcess("arma3battleye.exe") || SteamUtils.findProcess("arma3battleye.exe");
|| SteamUtils.findProcess("arma3launcher.exe");
logger.debug(arma_running ? "ArmA process found" : "ArmA process not found"); logger.debug(arma_running ? "ArmA process found" : "ArmA process not found");

View File

@ -1,29 +1,26 @@
package de.mc8051.arma3launcher.utils; package de.mc8051.arma3launcher.utils;
import java.io.BufferedReader; import org.apache.logging.log4j.LogManager;
import java.io.IOException; import org.apache.logging.log4j.Logger;
import java.io.InputStreamReader;
import java.util.ArrayList; import java.util.Optional;
/** /**
* Created by gurkengewuerz.de on 23.03.2020. * Created by gurkengewuerz.de on 23.03.2020.
*/ */
public class SteamUtils { public class SteamUtils {
public static boolean findProcess(String findProcess) throws IOException { private static final Logger logger = LogManager.getLogger(SteamUtils.class);
String filenameFilter = "/nh /fi \"Imagename eq "+findProcess+"\"";
String tasksCmd = System.getenv("windir") +"/system32/tasklist.exe "+filenameFilter;
Process p = Runtime.getRuntime().exec(tasksCmd); public static boolean findProcess(String findProcess) {
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); Optional<ProcessHandle> p = ProcessHandle.allProcesses()
.filter(processHandle -> processHandle.info().command().isPresent())
ArrayList<String> procs = new ArrayList<String>(); .filter(process -> process.info().command().get().toLowerCase().endsWith(findProcess)).findFirst();
String line = null; if(p.isEmpty()) return false;
while ((line = input.readLine()) != null) logger.debug("Found process {}", findProcess);
procs.add(line); logger.debug(" PID {}", p.get().pid());
logger.debug(" Name {}", p.get().info().command());
input.close(); logger.debug(" User {}", p.get().info().user());
return true;
return procs.stream().anyMatch(row -> row.contains(findProcess));
} }
} }

View File

@ -71,7 +71,7 @@ use64bitclient_desc=Startet Arma3 mit der f
use_workshop=Versuche Workshop Inhalte zu nutzen 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 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=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. 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. 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 path_not_set=ArmA oder Mod Verzeichnis nicht gesetzt

View File

@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<properties> <properties>
<gui.version>0.1.1003</gui.version> <gui.version>0.1.1004</gui.version>
</properties> </properties>
<groupId>de.mc8051</groupId> <groupId>de.mc8051</groupId>