Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Как определить что приложение висит? Добавлено: 20.04.07 18:12  

Автор вопроса:  HACKER

Ответить

  Ответы Всего ответов: 22  

Номер ответа: 16
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #16 Добавлено: 22.04.07 18:23
„@ MSDN „y„x „Ѓ„‚„y„~„€„y„Ѓ„p „~„u „y„ѓ„Ѓ„Ђ„|„Ћ„x„…„u„Љ„Ћ? :)
„T„s„p„t„p„| :)

Declare Function IsHungAppWindow Lib Ѓguser32ЃЌ Alias ЃgIsHungAppWindowЃh (ByVal hwnd As Long) As Long

Ответить

Номер ответа: 17
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #17 Добавлено: 22.04.07 18:25
тю, странно


попытка #2
А MSDN из принципа не используешь? :)
Угадал :)

Declare Function IsHungAppWindow Lib "user32" Alias "IsHungAppWindow" (ByVal hwnd As Long) As Long

Ответить

Номер ответа: 18
Автор ответа:
 intel-DX



ICQ: 445091742 

Вопросов: 4
Ответов: 169
 Профиль | | #18 Добавлено: 22.04.07 18:29
А где можно достать MSDN, или хотя бы некоторые разделы на руском или на английском ?

Ответить

Номер ответа: 19
Автор ответа:
 ISpy



Разработчик Offline Client

Вопросов: 47
Ответов: 621
 Web-сайт: intermult.boom.ru
 Профиль | | #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
Авось пригодится кому-то...
'© HACKER
'Модуль для определения зависнувших приложений
'Работает как в 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
Утро вечера мудренее, если никто незнает что вы и не ложились... ВОт так сказать пропатченная :)

Public Function IsAppHung(ByVal hWnd As Long) As Long
    
    '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...

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам