purebasic.info

PureBasic forum
Текущее время: Ср сен 19, 2018 2:17 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Приостановленный процесс
СообщениеДобавлено: Чт май 11, 2017 7:33 pm 
Не в сети
ассистент

Зарегистрирован: Вс мар 12, 2017 2:53 pm
Сообщений: 13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Почти год у меня исправно работала программка, которая запускалась только если не запущены некоторые приложения.
реализовано было так
Я получал PID процесса
PID=GetPidProcess("Video.UI.exe")
If PID>0
то программка не запускалась
Теперь она перестала запускаться вообще, как оказалось потому, что процесс, когда выключаешь проигрыватель не всегда исчезает из диспетчера задач, а переходит в состояние приостановлен(Suspended). Я кстати так и не понял, что и где в винде я нажал.
Ну и соответственно вопрос, как распознать "дремлющий" процесс?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Приостановленный процесс
СообщениеДобавлено: Чт май 11, 2017 8:42 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 271
Благодарил (а): 14 раз.
Поблагодарили: 32 раз.
Пункты репутации: 0
Zar писал(а):
Почти год у меня исправно работала программка
За это время Windows перезагружалась? :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Приостановленный процесс
СообщениеДобавлено: Чт май 11, 2017 8:44 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 18, 2009 3:41 am
Сообщений: 1126
Благодарил (а): 86 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
Zar писал(а):
оказалось потому, что процесс, когда выключаешь проигрыватель не всегда исчезает из диспетчера задач, а переходит в состояние приостановлен(Suspended). Я кстати так и не понял, что и где в винде я нажал.
Ну и соответственно вопрос, как распознать "дремлющий" процесс?

Если осталось всё равно событие которое необходимо - это открытое окно "проигрывателя", может его (окно) и отслеживать а не процесс ?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Приостановленный процесс
СообщениеДобавлено: Чт май 11, 2017 9:45 pm 
Не в сети
ассистент

Зарегистрирован: Вс мар 12, 2017 2:53 pm
Сообщений: 13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Конечно перезагружалась, каждый день. А окна то нет, только приостановленный процесс в диспетчере.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Приостановленный процесс
СообщениеДобавлено: Чт май 11, 2017 10:51 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 271
Благодарил (а): 14 раз.
Поблагодарили: 32 раз.
Пункты репутации: 0
Отчего такая уверенность что процесс "приостановленный"? Может это глюк. Если это результат обновления программы (заведомо предсказуемое поведение) это одно, а если нет... подстраиваться под странное поведение программы это же не выход :?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Приостановленный процесс
СообщениеДобавлено: Пт май 12, 2017 6:44 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 18, 2009 3:41 am
Сообщений: 1126
Благодарил (а): 86 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
Zar писал(а):
Конечно перезагружалась, каждый день. А окна то нет, только приостановленный процесс в диспетчере.

уточни тогда пару вопросов: :)
1) ты писал "когда выключаешь проигрыватель" - у "проигрывателя" значит есть окно когда он работает в штатном режиме или ты как его "выключаешь"?
2) если на первый вопрос ответ положительный, тогда: твоя программа должна работать только когда открыто это самое окно "проигрывателя"?



PS: искать непонятное состояние процесса - ИМХО, это утопия, если нет никаких API или чего там ещё бывает, предоставленных от целевого процесса.
можно пробовать отследить занимаемую память, загрузку проца, количество потоков дочерних, или ещё какую гадость, но думаю после очередного обновления будешь колдовать новые условия поиска своего грааля :(


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Приостановленный процесс
СообщениеДобавлено: Пт май 12, 2017 7:28 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6382
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
registrymechanic писал(а):
искать непонятное состояние процесса - ИМХО, это утопия, если нет никаких API

Это реально и API есть
Правильное решение задачи - использование информации о процессах и потоках, полученной при помощи функции NtQuerySystemInformation. Эта функция при вызове с параметром SystemProcessInformation делает мгновенный "снимок" состояния всех процессов и их потоков, имеющихся в системе на момент ее вызова. Затем нужно просто найти в массиве процессов интересующий нас процесс и проверить состояние его потоков.
Подробно и исходники на FASM можно подсмотреть тут

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Приостановленный процесс
СообщениеДобавлено: Пт май 12, 2017 1:49 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 18, 2009 3:41 am
Сообщений: 1126
Благодарил (а): 86 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
kvitaliy писал(а):
API есть

я имел ввиду API предоставляемых самим приложением а не WinAPI, но это не суть важно...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Приостановленный процесс
СообщениеДобавлено: Пт май 12, 2017 8:42 pm 
Не в сети
ассистент

Зарегистрирован: Вс мар 12, 2017 2:53 pm
Сообщений: 13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
repeat писал(а):
Отчего такая уверенность что процесс "приостановленный"? Может это глюк. Если это результат обновления программы (заведомо предсказуемое поведение) это одно, а если нет... подстраиваться под странное поведение программы это же не выход :?

Открываю диспетчер задач, нахожу процесс во вкладке подробности, состояние-приостановлен( 10 винда), причем после перезагрузки, то есть плеер не запускался, и еще прикол в том, что не после каждой перезагрузке, иногда его и нет
Там он кстати не один такой, еще:ShellExperienceHost.exe, SearchUI.exe, Microsoft.Photos.exe, SkypeHost.exe и т.д


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Приостановленный процесс
СообщениеДобавлено: Пт май 12, 2017 8:48 pm 
Не в сети
ассистент

Зарегистрирован: Вс мар 12, 2017 2:53 pm
Сообщений: 13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy писал(а):
registrymechanic писал(а):
искать непонятное состояние процесса - ИМХО, это утопия, если нет никаких API

Это реально и API есть
Правильное решение задачи - использование информации о процессах и потоках, полученной при помощи функции NtQuerySystemInformation. Эта функция при вызове с параметром SystemProcessInformation делает мгновенный "снимок" состояния всех процессов и их потоков, имеющихся в системе на момент ее вызова. Затем нужно просто найти в массиве процессов интересующий нас процесс и проверить состояние его потоков.
Подробно и исходники на FASM можно подсмотреть тут

Похоже, что правильное направление. Но хотелось бы решение на пурике, а не Ассемблере


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Приостановленный процесс
СообщениеДобавлено: Пт май 12, 2017 9:01 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6382
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Если этого ни кто для себя не писал, то вряд ли захочет возится просто так.
В принципе скелет и общий вектор написания подобного кода можно найти у буржуев по слову SystemProcessInformation
http://www.purebasic.fr/english/viewtop ... 13&t=58969
Но конкретный функционал по вытаскиванию именно тебе нужной информации придется добавлять самому, с помощью того кода на FASM.
В программирование это есть самое интересное, ведь так?

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Приостановленный процесс
СообщениеДобавлено: Сб май 13, 2017 5:02 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2285
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Недавно товарищу на Windows 10 ставил K-Lite Codec Pack (а там плеер Media Player Classic), так вот, на одной из версии плеера была такая же фигня. Он кино посмотрел, закрыл окно, а в процессах плеер остался висеть. Т.к. дело было в море и без интернетов, я не особо вникал, Suspended (Приостановлен) или нет был тот процесс, а просто тупо поставил другую версию MPC.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Bing [Bot] и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB