Программное закрытие зависшей консоли.
-
- leader
- Сообщения: 526
- Зарегистрирован: 28 фев 2010, 18:04
- Версия LabVIEW: LV2018
- Благодарил (а): 10 раз
- Поблагодарили: 18 раз
- Контактная информация:
Программное закрытие зависшей консоли.
Запущенная через командную строку программа звисла. Как её программно закрыть? Нашёл такую команду - TASKKILL. Быстренько просмотрев её, вижу, что с её помощью можно осуществить желаемое. На этом этапе хотелось бы понять есть ли ещё какие варианты и по какому лучше пойти в Labview/
-
- leader
- Сообщения: 526
- Зарегистрирован: 28 фев 2010, 18:04
- Версия LabVIEW: LV2018
- Благодарил (а): 10 раз
- Поблагодарили: 18 раз
- Контактная информация:
Re: Программное закрытие зависшей консоли.
Прошёл видимый и понятный вариант, вот, что получилось.
- Вложения
-
- Закрытие консоли.zip
- (62.39 КБ) 38 скачиваний
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Программное закрытие зависшей консоли.
Это самое простое и универсальное (если говорить о Windows) решение. Остальное будет сложнее. Например, есть функция TerminateProcess, она требует на входе хэндл процесса. Вам придётся "нестандартно" запускать приложение, чтобы получить его хэндл и передать в функцию. Вам это надо? :)
-
- leader
- Сообщения: 526
- Зарегистрирован: 28 фев 2010, 18:04
- Версия LabVIEW: LV2018
- Благодарил (а): 10 раз
- Поблагодарили: 18 раз
- Контактная информация:
Re: Программное закрытие зависшей консоли.
Решил облагородить программку, надеюсь, что может быть полезна.
- Вложения
-
- Закрытие консоли+.zip
- (69.5 КБ) 43 скачивания
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Программное закрытие зависшей консоли.
Более элегантный способ. У этого компонента (Process) есть множество других методов. В том числе получение списка процессов и прочее.
- Вложения
-
- process kill.png (12.86 КБ) 1490 просмотров
-
- leader
- Сообщения: 526
- Зарегистрирован: 28 фев 2010, 18:04
- Версия LabVIEW: LV2018
- Благодарил (а): 10 раз
- Поблагодарили: 18 раз
- Контактная информация:
Re: Программное закрытие зависшей консоли.
Вот так. Век живи, век учись, а всё равно помрёш. Но всё равно спасибо .
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Программное закрытие зависшей консоли.
На Винде тот же самый TerminateProcess и вызывается. Я проверил в отладчике. Если б результат отработки вызова возвращался, был бы доп. профит какой-то (1 - успех, 0 - неудача). А так, лишняя привязка к .NET, в общем, на вкус и цвет.
Для общего развития: 12 ways to terminate a process
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Программное закрытие зависшей консоли.
Вообще-то результат вызова возвращается. Если например указывается неверный ID, возвращается ошибка.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Программное закрытие зависшей консоли.
Я имел ввиду, удалось грохнуть или нет. Бывают процессы, которые так просто не прихлопнуть (висит или недостаточно прав). Для уверенности придётся поллить список процессов или проверять свойство HasExited.