![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 23.09.2007
Сообщений: 147
|
![]()
Вопрос 1:
Как система мониторит когда приложение зависло? Я слышал что окну отправляется timeout-сообщение, если время ожидания ответа превышено или ответ так и не был получен, то приложение признается зависшим, как можно в своей программе быстро реагировать на зависание других приложений? ну например с целью предложения их завершения (чтобы пользователь не лез в диспетчер задач) Вопрос 2: Так же интересно узнать о возможностях мониторинга загрузки ЦП и оперативы приложениями в целях реагирования на это программы. Если только драйвером, то можете не отвечать (я надеюсь на ассемблерный код) Вопрос 3 (немного не по теме): Какой параметер нужно передать в NtShutdownSystem из ntdll чтобы перезагрузить компьютер, а то у меня при передачи единицы и предварительного получения нужных привилегий высвечивается окно выбора (Жд. режим, Выключение или Перезагрузка)?
Я надеваю тапочки, ищу чем похмелиться, ах, если я сейчас умру, то на... я родился
|
![]() |
![]() |
![]() |
#2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Много раз сталкивался со случаями когда приложение зависшее по всем параметрам, но я знаю и даже вижу что работает (например 3DStudio при рендере генерит файл), и висеть так может и час и два, а ты его закрыть хош... Как по мне однозначно определить зависание всетки невозможно... Разве что нехарактерная работа программы, но как узнать для какой программы сколько timeout нужно? Насчет загрузки проца вот описано: http://delphiworld.narod.ru/base/loading_processor.html
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 23.09.2007
Сообщений: 147
|
![]()
Вот прототип программы, пока только по зависаниям, пишу на дельфе, думаю Win Api везде одинаковая, вопрос такой это будет работать?
Код:
С помощью EnumWindows перебираются все окна, в EnumWindowProc с помощью функции IsHungAppWindow выесняется зависло приложение или нет, если да, создается поток с диалоговым окном, которое и сообщает о зависании и предлагает завершить работу программы (в этот поток передается id окна, по которому вычисляется имя исполняемого файла приложения для информирования пользователя и хэндл приложения для его возможного завершения) Кстати, можно ли как-нибудь отфильтровать окна, чтобы не все из них проверять на зависание, ведь куча системных окон редко виснет? P.S. 2 Stilet спасибо за ссылку
Я надеваю тапочки, ищу чем похмелиться, ах, если я сейчас умру, то на... я родился
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 23.09.2007
Сообщений: 147
|
![]()
По-моему моя прога не пашет, поскольку когда открываю сетевое окружение и шелл виснет где-то секунд 20, а реакции никакой
Появился вопрос: а как можно определить какой из процессов в данный момент времени сколько ЦП жрет (как это делается в диспетчере задач)? аналогично и про оперативу? P.S. Насчет фильтрации окон - я убрал из проверки на зависон окна с именами M и Default IME, а также без имен
Я надеваю тапочки, ищу чем похмелиться, ах, если я сейчас умру, то на... я родился
Последний раз редактировалось joker; 23.08.2008 в 15:08. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа для удаленного мониторинга оборудования | ALeonP | Работа с сетью в Delphi | 1 | 09.12.2007 15:26 |
способы работы с Б.Д. | Ванька | БД в Delphi | 1 | 20.11.2007 22:12 |
способы создания баз | Ванька | БД в Delphi | 2 | 20.11.2007 12:42 |
программа мониторинга обращения к дисковой подсистеме | Vasya | Софт | 1 | 24.10.2007 21:20 |
Способы вызовов функций | MultIfleX | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 16.10.2007 06:07 |