Что нового

[Процессы] Выгрузка зависшего приложения

joiner

Модератор
Локальный модератор
Сообщения
3 362
Репутация
586
я поднимал подобный вопрос в теме http://autoit-script.ru/index.php/topic,7242.0.html
Yashied указал на функцию
Код:
_WinAPI_IsHungAppWindow()
из WinApiEx.au3
я использовал не в предложенном варианте а так
Код:
While 1
	$_ActivWindow = WinGetHandle("[Active]")
	If _WinAPI_IsHungAppWindow($_ActivWindow) Then 
		WinKill($_ActivWindow)
	EndIf
	Sleep(100)
WEnd

Func _WinAPI_IsHungAppWindow($hWnd)
	Local $Ret = DllCall('user32.dll', 'int', 'IsHungAppWindow', 'hwnd', $hWnd)
	If @error Then
		Return SetError(1, 0, 0)
	EndIf
	Return $Ret[0]
EndFunc

работает при зависании контекстного меню. проверял работу, когда привод не мог считать диск ( диск был убитый), соответственно было зависание окна "мой компьютер". в обоих случаях сначала выгружался explorer.exe, а потом закрывалось окно.
Косяк всплыл позже..запустил qip (старый) . появилось окно с прогрессом загрузки..на половине загрузки (когда строка состояния загрузки была неподвижна) скрипт закрыл окно, соответственно сам процесс qip.exe выгрузился. не понял, почему так мало дано было времени скриптом программе на отклик?. контекстному меню он дольше давал висеть.
кажется вот решение рядом, но что то не могу обойти этот косяк.
 

winstan

Эксплотатор)
Сообщения
406
Репутация
78
Ну можно увеличеть время между сканированиями, добать счётчик чтобы программа убивалась не сразу а после нескольких продрят проверок.
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3 362
Репутация
586
решил , наверное, топорно. просто назначил на функцию горячую клавишу...даю время проге откликнуться. если напрочь зависла , запускаю функцию..
мне туго дается(надеюсь пока) все, что касается
Код:
DllCall

вобщем решение меня не устроило, но все ж решение..поэтому отмечу тему решенной. (
 
Верх