elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 09:01  


Tema destacado: Entra al canal IRC oficial de #elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  Saber si una aplicación no responde
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Saber si una aplicación no responde  (Leído 499 veces)
тαптяαпсє


Desconectado Desconectado

Mensajes: 739


Usuario EHN


Ver Perfil
Saber si una aplicación no responde
« en: 12 Agosto 2011, 21:55 »

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.


En línea

raul338
Moderador
***
Desconectado Desconectado

Mensajes: 2.372


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Saber si una aplicación no responde
« Respuesta #1 en: 12 Agosto 2011, 22:04 »

Abajo hay una nota que dice claramente

Citar
Nota: Para ver el estado del programa para ver si este responde o no, se usa la función del api SendMessageTimeout.

Que se usaría algo así

Código
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


En línea

тαптяαпсє


Desconectado Desconectado

Mensajes: 739


Usuario EHN


Ver Perfil
Re: Saber si una aplicación no responde
« Respuesta #2 en: 12 Agosto 2011, 22:18 »

Abajo hay una nota que dice claramente

Que se usaría algo así

Código
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
En línea

тαптяαпсє


Desconectado Desconectado

Mensajes: 739


Usuario EHN


Ver Perfil
Re: Saber si una aplicación no responde
« Respuesta #3 en: 12 Agosto 2011, 22:21 »

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
En línea

raul338
Moderador
***
Desconectado Desconectado

Mensajes: 2.372


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Saber si una aplicación no responde
« Respuesta #4 en: 12 Agosto 2011, 22:28 »

Yo intentaría asi

Código
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 :¬¬
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines