Título: Saber si una aplicación no responde
Publicado por: тαптяα en 12 Agosto 2011, 21:55 pm
Tengo una pequeña duda, quiero saber si mi aplicación No responde y ejecutar una función.
Se puede conseguir sin hacer falta esto: http://www.recursosvisualbasic.com.ar/htm/listado-api/235-ver-si-aplicacion-responde.htm
Gracias.
Título: Re: Saber si una aplicación no responde
Publicado por: raul338 en 12 Agosto 2011, 22:04 pm
Abajo hay una nota que dice claramente Nota: Para ver el estado del programa para ver si este responde o no, se usa la función del api SendMessageTimeout (http://msdn.microsoft.com/en-us/library/ms644952%28v=vs.85%29.aspx). Que se usaría algo así Private Declare Function SendMessageTimeout lib "USER32" Alias "SendMessageTimeoutA" _ (ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, _ lParam As Any, ByVal fuFlags As Long, ByVal uTimeout As Long, _ ByVal lpdwResult As Long) As Long ' Constantes para fuFlags Private Const SMTO_ABORTIFHUNG As Long = &H2 ' No espera a que se termine el TimeOut Private Const SMTO_BLOCK As Long = &H1 ' Previene que tu aplicacion procese mensajes mientras se espera Private Const SMTO_NORMAL As Long = &H0 ' No previene que tu aplicacion procese mensajes mientras se espera Private Const SMTO_NOTIMEOUTIFNOTHUNG As Long = &H8 ' Si el proceso destino procesa mensajes no espera a el TimeOut Private Const SMTO_ERRORONEXIT As Long = &H20 ' Devuelve 0 si el proceso de destino finaliza o la ventana es destruido
Título: Re: Saber si una aplicación no responde
Publicado por: тαптяα en 12 Agosto 2011, 22:18 pm
Abajo hay una nota que dice claramente Que se usaría algo así Private Declare Function SendMessageTimeout lib "USER32" Alias "SendMessageTimeoutA" _ (ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, _ lParam As Any, ByVal fuFlags As Long, ByVal uTimeout As Long, _ ByVal lpdwResult As Long) As Long ' Constantes para fuFlags Private Const SMTO_ABORTIFHUNG As Long = &H2 ' No espera a que se termine el TimeOut Private Const SMTO_BLOCK As Long = &H1 ' Previene que tu aplicacion procese mensajes mientras se espera Private Const SMTO_NORMAL As Long = &H0 ' No previene que tu aplicacion procese mensajes mientras se espera Private Const SMTO_NOTIMEOUTIFNOTHUNG As Long = &H8 ' Si el proceso destino procesa mensajes no espera a el TimeOut Private Const SMTO_ERRORONEXIT As Long = &H20 ' Devuelve 0 si el proceso de destino finaliza o la ventana es destruido
Muchas gracias, pues me habia casi rendido ya. Aunque no sé si podre aplicarlo esto a mi programa. Si tengo dudas respondere en este mensaje. Saludos
Título: Re: Saber si una aplicación no responde
Publicado por: тαптяα en 12 Agosto 2011, 22:21 pm
Vale, la información que he leido de MSDN sobre esta función me ha confundido aún más. Como podría saber con SendMessageTimeout si mi aplicación no responde.
Gracias de nuevo
Título: Re: Saber si una aplicación no responde
Publicado por: raul338 en 12 Agosto 2011, 22:28 pm
Yo intentaría asi Private Declare Function SendMessageTimeout lib "USER32" Alias "SendMessageTimeoutA" _ (ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, _ lParam As Any, ByVal fuFlags As Long, ByVal uTimeout As Long, _ ByVal lpdwResult As Long) As Long Private Const SMTO_BLOCK As Long = &H1 ' Previene que tu aplicacion procese mensajes mientras se espera Private Const SMTO_ERRORONEXIT As Long = &H20 ' Devuelve 0 si el proceso de destino finaliza o la ventana es destruido Private Const WM_GETTEXT As Long = &HD Function IsAlive(ByVal hwnd as Long, Optional ByVal TimeOut as Long = 4500) as Boolean IsAlive = SendMessageTimeout(hwnd, WM_GETTEXT, 0, 0, SMTO_BLOCK Or SMTO_ERRORONEXIT, TimeOut) End Function
Aunque no lo he probado ni yo :xD por apurado :¬¬
|