Как проверить запущена ли программа?

Просто демонстрации как работают те или иные действия или события
Аватара пользователя
LizardOfOzz
Гвардии пилот - Наставник
Сообщения: 1165
Зарегистрирован: Пт сен 08, 2006 8:59 pm
Благодарил (а): 8 раз
Поблагодарили: 38 раз
Контактная информация:

Re: Как проверить запущена ли программа?

Сообщение LizardOfOzz » Ср янв 27, 2010 1:08 pm

Евгений писал(а):Уважаемые, может кто сможет подсказать как выявить и перезапустить неотвечающую программу. Спасибо.
вот, например.
Изображение Изображение

Аватара пользователя
LizardOfOzz
Гвардии пилот - Наставник
Сообщения: 1165
Зарегистрирован: Пт сен 08, 2006 8:59 pm
Благодарил (а): 8 раз
Поблагодарили: 38 раз
Контактная информация:

Re: Как проверить запущена ли программа?

Сообщение LizardOfOzz » Ср янв 27, 2010 1:46 pm

Лучше вы расскажите, как заполучить зависшее приложение. =) Я вот даже скриптик набросал, а как проверить - не знаю....

Код: Выделить всё

require "Win32API"

FindWindow = Win32API.new 'user32', 'FindWindow', 'PP', 'L'
IsHungAppWindow = Win32API.new 'user32', 'IsHungAppWindow', 'L', 'B'

header = 'Win32API from Ruby'
hwnd = FindWindow.call nil, header
hung = IsHungAppWindow.call hwnd
if hung == 0 then
  puts 'not hung'
else
  puts 'hung'
end
Изображение Изображение

Евгений
Пассажир
Сообщения: 11
Зарегистрирован: Ср янв 13, 2010 11:57 am
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Как проверить запущена ли программа?

Сообщение Евгений » Ср янв 27, 2010 2:41 pm

А средствами прграммы Хstart не получится? Я к сожалению, не программист, но думаю придется выучить С++
Тем не менее спасибо...
Может автор нам поможет?..а?

Аватара пользователя
LizardOfOzz
Гвардии пилот - Наставник
Сообщения: 1165
Зарегистрирован: Пт сен 08, 2006 8:59 pm
Благодарил (а): 8 раз
Поблагодарили: 38 раз
Контактная информация:

Re: Как проверить запущена ли программа?

Сообщение LizardOfOzz » Ср янв 27, 2010 2:51 pm

Сомневаюсь. Я ж написал скрипт, надо только проверить... Кста, если у вашей зависшей проги нет окна, то простого способа обнаружить зависание нет. В ссылке всё это описано.
Изображение Изображение

Евгений
Пассажир
Сообщения: 11
Зарегистрирован: Ср янв 13, 2010 11:57 am
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Как проверить запущена ли программа?

Сообщение Евгений » Ср янв 27, 2010 4:25 pm

Окна есть...что делать с вашей программой я тоже не знаю. Может сделать полноценное приложение ,скомпилировать его в среде С++ с кнопочкой "пуск" и с выходом в файл , а потом из файла хStarterом выцепить. Но я это сейчас вряд ли смогу...для первой в жизни прграммы в С++ сложновато.

avmaksimov
Ас
Сообщения: 907
Зарегистрирован: Чт май 08, 2008 2:48 pm
Откуда: г. Москва, Россия
Благодарил (а): 6 раз
Поблагодарили: 16 раз
Контактная информация:

Re: Как проверить запущена ли программа?

Сообщение avmaksimov » Ср янв 27, 2010 5:00 pm

Евгений писал(а):Окна есть...что делать с вашей программой я тоже не знаю. Может сделать полноценное приложение ,скомпилировать его в среде С++ с кнопочкой "пуск" и с выходом в файл , а потом из файла хStarterом выцепить. Но я это сейчас вряд ли смогу...для первой в жизни прграммы в С++ сложновато.
Гораздо проще и лучше сделать плагин в xStarterDesigner... И общество будет вам благодарно! :). Вот только не спрашивайте как - лучше на форуме поищите :).
За это сообщение автора avmaksimov поблагодарил:
Евгений (Ср янв 27, 2010 5:00 pm)
Рейтинг: 33.33%
С уважением, Андрей.

Евгений
Пассажир
Сообщения: 11
Зарегистрирован: Ср янв 13, 2010 11:57 am
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Как проверить запущена ли программа?

Сообщение Евгений » Ср янв 27, 2010 8:24 pm

Я знал, знал, что как-то можно. Спасибо, добрый человек, поисчю.

Аватара пользователя
LizardOfOzz
Гвардии пилот - Наставник
Сообщения: 1165
Зарегистрирован: Пт сен 08, 2006 8:59 pm
Благодарил (а): 8 раз
Поблагодарили: 38 раз
Контактная информация:

Re: Как проверить запущена ли программа?

Сообщение LizardOfOzz » Чт янв 28, 2010 1:11 pm

Плагин, это конечно да. Но его ещё надо уметь делать. А тем временем я проверил свой скрипт и обнаружил, что он работает. =)

Надо поставить ruby и запускать этот скрипт такой командой:

Код: Выделить всё

ruby file.rb
Проверенный скрипт:

Код: Выделить всё

require "Win32API"

FindWindow = Win32API.new 'user32', 'FindWindow', 'PP', 'L'
IsHungAppWindow = Win32API.new 'user32', 'IsHungAppWindow', 'L', 'B'

header = 'Win32API from Ruby'

hwnd = FindWindow.call nil, header
if hwnd == 0 then
  puts "window not found"
else
  hung = IsHungAppWindow.call hwnd
  if hung == 0 then
    puts "window works fine"
  else
    puts "hung detected"
  end
end
Изображение Изображение

avmaksimov
Ас
Сообщения: 907
Зарегистрирован: Чт май 08, 2008 2:48 pm
Откуда: г. Москва, Россия
Благодарил (а): 6 раз
Поблагодарили: 16 раз
Контактная информация:

Re: Как проверить запущена ли программа?

Сообщение avmaksimov » Чт янв 28, 2010 1:25 pm

А вдруг и мне плагин потом пригодится!? :))))
С уважением, Андрей.

Аватара пользователя
LizardOfOzz
Гвардии пилот - Наставник
Сообщения: 1165
Зарегистрирован: Пт сен 08, 2006 8:59 pm
Благодарил (а): 8 раз
Поблагодарили: 38 раз
Контактная информация:

Re: Как проверить запущена ли программа?

Сообщение LizardOfOzz » Чт янв 28, 2010 1:37 pm

avmaksimov писал(а):А вдруг и мне плагин потом пригодится!? :))))
Да я ж не против, мне просто лень ставить дельфю, когда можно обойтись текстовым редактором.
Изображение Изображение

avmaksimov
Ас
Сообщения: 907
Зарегистрирован: Чт май 08, 2008 2:48 pm
Откуда: г. Москва, Россия
Благодарил (а): 6 раз
Поблагодарили: 16 раз
Контактная информация:

Re: Как проверить запущена ли программа?

Сообщение avmaksimov » Чт янв 28, 2010 1:46 pm

LizardOfOzz писал(а):
avmaksimov писал(а):А вдруг и мне плагин потом пригодится!? :))))
Да я ж не против, мне просто лень ставить дельфю, когда можно обойтись текстовым редактором.
Таки я надеялся, что Евгению не лень :)... И насколько понял, можно без Делфей обойтись...
С уважением, Андрей.

Аватара пользователя
LizardOfOzz
Гвардии пилот - Наставник
Сообщения: 1165
Зарегистрирован: Пт сен 08, 2006 8:59 pm
Благодарил (а): 8 раз
Поблагодарили: 38 раз
Контактная информация:

Re: Как проверить запущена ли программа?

Сообщение LizardOfOzz » Чт янв 28, 2010 3:33 pm

avmaksimov писал(а):
LizardOfOzz писал(а):
avmaksimov писал(а):А вдруг и мне плагин потом пригодится!? :))))
Да я ж не против, мне просто лень ставить дельфю, когда можно обойтись текстовым редактором.
Таки я надеялся, что Евгению не лень :)... И насколько понял, можно без Делфей обойтись...
Так ты боишься, что он воспользуется моим решением и не станет делать плагин? Хм...
Изображение Изображение

LexXxuS
Пассажир
Сообщения: 2
Зарегистрирован: Пт дек 03, 2010 1:03 pm
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Как проверить запущена ли программа?

Сообщение LexXxuS » Пт дек 10, 2010 6:02 pm

avmaksimov писал(а): Создаете задачу, которая запускается по событию "Процесс стартует/останавливается", указываете имя процесса или даже путь, если имя процесса может совпадать... Ставите условие на "остановку"... В действиях создаете одно только действие - запуск программы...
НЕ РАБОТАЕТ!!! (1.9.3.84)
:? чё делать?

(смысл задания в том чтобы подымать teamviever.exe и winvnc.exe, когда те в свою очередь падают без всяких предупреждений)

Аватара пользователя
LizardOfOzz
Гвардии пилот - Наставник
Сообщения: 1165
Зарегистрирован: Пт сен 08, 2006 8:59 pm
Благодарил (а): 8 раз
Поблагодарили: 38 раз
Контактная информация:

Re: Как проверить запущена ли программа?

Сообщение LizardOfOzz » Пт дек 10, 2010 7:05 pm

Если они запущены как службы, попробуйте раз в 5 минут дёргать net start. Всяко надёжнее, чем отслеживать запуск процесса.
Изображение Изображение

FomakinSergey
Пассажир
Сообщения: 13
Зарегистрирован: Ср фев 09, 2011 9:37 am
Благодарил (а): 0
Поблагодарили: 0

Re: Как проверить запущена ли программа?

Сообщение FomakinSergey » Ср фев 16, 2011 10:30 am

Помогите пожалуйста.
Необходимо реализовать задачу следующего характера.
Каждые 30 сек (например) проверяем запущен ли процесс программы, если запущен, то далее проверяем запущено ли окно программы.
Пробую это сделать с помощью действий "Количество запущенных" (проверяем процесс) и "Найти окно" (проверяем окно). Все это запихиваю в IF/ELSE.
Процесс удачно ищется, но при проверке окна по заголовку окна он мне всегда выдает True!!! (Условие "If [FindWindows1.Sucess]=True then...").

Пробую отдельно отработать задание на "найти окно" - ничего не выходит ((.
Такая схема необходима, т.к. у меня крутиться программка, которая может неожиданно закрыть окно, но не закрыть процесс.

Ответить