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")
|| 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");

View File

@ -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<String> procs = new ArrayList<String>();
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<ProcessHandle> 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;
}
}

View File

@ -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

View File

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