Como detectar que se ha abierto una ventana?

Iniciado por icisneros, 29 Marzo 2006, 20:20 PM

0 Miembros y 1 Visitante están viendo este tema.

icisneros

Como puedo detectar que se ha abierto una ventana nueva en el sistema, o un popup de error, para entonces enviar yo una sucesion de teclas automaticamente?

Lo que yo quiero hacer es dejar el pc como esta, y que si sale algun error de alguna aplicacion directamente mande la tecla {enter} para que sea como hacer click en aceptar y se cierre ese error...

Saludos!!

BenRu

Con AppActivate puedes hacerlo.

Despues para que pulse enter, SendKeys "{ENTER}"

No se si funcionara asi, creo que si...al menos hace el intento...

Private Sub Form_Load()
AppActivate "Foro Libre"
SendKeys "{Enter}"
End Sub


Un saludo


icisneros

Pues la verdad es que es mucho más facil así, yo lo he hecho llamando a la API porque de la forma que tu dices te busca ventanas de aplicaciones pero las ventanas de error del sistema no las encuentra. La funcion de la API que he usado es:

FindWindow


Ahora otra cosa por curiosidad, conociendo el handle de la ventana como puedo hacer para cerrarla?

Saludos!!

BenRu

Cita de: ~AnArKo~ en 29 Marzo 2006, 21:52 PM
Pues la verdad es que es mucho más facil así, yo lo he hecho llamando a la API porque de la forma que tu dices te busca ventanas de aplicaciones pero las ventanas de error del sistema no las encuentra. La funcion de la API que he usado es:

FindWindow

Saludos!!

Quizas esto te sirva para algo, o para sacarle algo:

Cerrar todos los formularios y aplicacion:
Dentro de un Form_Unload()
Dim i as integer
While forms.Count > 1
    i = 0
While forms(i).Caption = Me.Caption
         i = i + 1
    Wend
Unload forms(i)
Wend
Unload Me
End


CitarAhora otra cosa por curiosidad, conociendo el handle de la ventana como puedo hacer para cerrarla?

Pues con el mismo sendkeys, en vez de enviar Enter, envias Alt + F4..

Prueba con esto, que si recuerdo no mal, era asi
Sendkeys "\%{F4}"

O si no, prueba poniendole delante WshShell
WshShell.Sendkeys "\%{F4}"

Un saludo


icisneros

Gracias BenRu hacía tiempo que no trasteaba con VB y me ha costado...  :P

Ya me funciona todo como quería, gracias de nuevo.

Saludos!!

NYlOn

Sino queres utilizar el SendKeys (por el echo de que puede aparecer otra ventana adelante, etc) podes usar la API SendMessage de la siguiente forma:

Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_SYSCOMMAND = &H112
Private Const SC_CLOSE = &HF060&


Call SendMessage("VENTANA", WM_SYSCOMMAND, SC_CLOSE, ByVal 0&)


Saludos.-