@cattom72
Врач анестезиолог-реаниматолог. Караганда.

Как запустить и остановить процесс Windows из программы на Java?

Подскажите, пожалуйста, как из программы можно остановить процесс Windows ?
Например, с помощью Runtime.getRuntime() я запускаю калькулятор Windows. Повторным нажатием на кнопку я хочу его закрыть с помощью метода destroy() класса Process. Но он не закрывается.
btnCalculator.addActionListener(new ActionListener() {

		@Override
		public void actionPerformed(ActionEvent arg0) {
			// TODO Auto-generated method stub
			if (!isWinCalc){	    //  если калькулятор не запущен		  
			   try {
				  procOfCalc = Runtime.getRuntime().exec("calc");  // procOfCalc  - переменная типа Process
			   } catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			   }
			   isWinCalc = true;
			}
			else {
				procOfCalc.destroy();
				 isWinCalc = false;
			}
		}
	});
  • Вопрос задан
  • 1044 просмотра
Пригласить эксперта
Ответы на вопрос 2
@cattom72 Автор вопроса
Врач анестезиолог-реаниматолог. Караганда.
Такая фигня (неубиваемость) похоже только с calc.exe. Notepad.exe и mspaint.exe прекрасно останавливаются!
Почему?

Все, разобрался!
Все оказалось просто: файл Windows-калькулятора называется calc.exe, а запущенный процесс называется Calculator.exe.
И этого достаточно для нормальной работы кнопки:
btnCalculator.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent arg0) {
			// TODO Auto-generated method stub
            if (!isWinCalc){
            	try {
			Runtime.getRuntime().exec("C:/Windows/System32/calc.exe");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
            	isWinCalc = true;
            }
            else {
            	try {
            		Runtime.getRuntime().exec("taskkill /F /IM Calculator.exe");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
             	isWinCalc = false;
            }
	}
});
Ответ написан
Комментировать
Shockoway
@Shockoway
Можно воспользоваться командой taskkill:
Runtime.getRuntime().exec("taskkill calc /f");
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы