/** @brief abstrakte Klasse, die die aktiven Prozesse nach der Geodaten-Anzeige durchsucht,die PID ermittelt und dann ggf. killt */
static abstract class AbstractNativeProcessListingStrategy
implements IProcessListingStrategy
{
@Override
public void listProcesses()
throws Exception
{
Process process = makeProcessListingProcessBuilder().start();
Scanner scanner = new Scanner( process.getInputStream() );
while( scanner.hasNextLine() )
{
String sTemp = scanner.nextLine();
if( sTemp.contains("Programmname") ) // hier den Namen des zu killenden Prozesses eintragen
{
String sPID = sTemp.substring( 30, 34 );
String sCMD = "taskkill /PID " + sPID + " /F"; // "taskkill /PID nnnn /F"
try
{
System.out.println( "===> " + sCMD );
Process proc = Runtime.getRuntime().exec( sCMD );
proc.waitFor();
}
catch( InterruptedException eIE )
{
eIE.printStackTrace();
}
catch( IOException eIO )
{
eIO.printStackTrace();
}
}
}
scanner.close();
process.waitFor();
}
protected abstract ProcessBuilder makeProcessListingProcessBuilder();
} // class AbstractNativeProcessListingStrategy