Страница: 1 | 2 |
Вопрос: Как определить что приложение висит?
Добавлено: 20.04.07 18:12
Автор вопроса: HACKER
Ответы
Всего ответов: 22
Номер ответа: 16
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #16
Добавлено: 22.04.07 18:23
Номер ответа: 17
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #17
Добавлено: 22.04.07 18:25
тю, странно
попытка #2
Номер ответа: 18
Автор ответа:
intel-DX
ICQ: 445091742
Вопросов: 4
Ответов: 169
Профиль | | #18
Добавлено: 22.04.07 18:29
А где можно достать MSDN, или хотя бы некоторые разделы на руском или на английском ?
Номер ответа: 19
Автор ответа:
ISpy
Разработчик Offline Client
Вопросов: 47
Ответов: 621
Web-сайт:
Профиль | | #19
Добавлено: 22.04.07 18:50
http://msdn2.microsoft.com/ru-ru/default.aspx
Номер ответа: 20
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #20
Добавлено: 04.05.07 03:08
Авось пригодится кому-то...
'Модуль для определения зависнувших приложений
'Работает как в 2k, так и в 9х
'ВНИМАНИЕ! Модуль вызывает ApiByName - http://www.vbnet.ru/samples/Download.aspx?id=620
Private Const VER_PLATFORM_WIN32_NT As Long = 2
Private Declare Function GetVersionEx Lib "kernel32.dll" Alias "GetVersionExA" (ByRef lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hWnd As Long, ByRef lpdwProcessId As Long) As Long
Private Declare Function IsWindow Lib "user32.dll" (ByVal hWnd As Long) As Long
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Public Function IsAppHung(ByVal hWnd As Long) As Integer
'hWnd - идентификатор окна
'Функция возвращает 0 - если окно не отвечает; 1 - если отвечает
'-1 - если окно не найдено; -2 - если не найден процесс
If IsWindow(hWnd) = False Then
IsAppHung = -1
Exit Function
End If
Dim os As OSVERSIONINFO
Call GetVersionEx(os)
If os.dwPlatformId = VER_PLATFORM_WIN32_NT Then
IsAppHung = CBool(ApiByName("user32.dll", "IsHungAppWindow", False, hWnd))
Else
Dim idThread As Long
idThread = GetWindowThreadProcessId(hWnd, 0&
If idThread = 0 Then
IsAppHung = -2
Exit Function
End If
IsAppHung = CBool(ApiByName("user32.dll", "IsHungThread", False, idThread))
End If
End Function
Номер ответа: 21
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #21
Добавлено: 04.05.07 06:49
Утро вечера мудренее, если никто незнает что вы и не ложились... ВОт так сказать пропатченная
'hWnd - идентификатор окна
'Функция возвращает 1 - если окно не отвечает; 0 - если отвечает
'-1 - если окно не найдено; -2 - если не найден процесс
If IsWindow(hWnd) = False Then
IsAppHung = -1
Exit Function
End If
Dim os As OSVERSIONINFO
os.dwOSVersionInfoSize = Len(os)
Call GetVersionEx(os)
If os.dwPlatformId = VER_PLATFORM_WIN32_NT Then
IsAppHung = ApiByName("user32.dll", "IsHungAppWindow", False, hWnd)
Else
Dim idThread As Long
idThread = GetWindowThreadProcessId(hWnd, 0&
If idThread = 0 Then
IsAppHung = -2
Exit Function
End If
IsAppHung = ApiByName("user32.dll", "IsHungThread", False, idThread)
End If
End Function
Номер ответа: 22
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #22
Добавлено: 06.05.07 03:40
Это.. чё то я тут хотел написать, пока страница грузилась забыл...
а так вот! Мож у меня ручки крючки, или спать опять пора.. но в win2003 функция IsHungAppWindow неработает што-ли? Сделал через SendMessageTimeout...