Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

keybd_event ALT + TAB

Estas en el tema de keybd_event ALT + TAB en el foro de Visual Basic clásico en Foros del Web. Quiero que me aparezca el menú de los programas que están en ejecución que aparece cuando se presionan las teclas ALT y TABULADOR. Para ello ...
  #1 (permalink)  
Antiguo 24/05/2005, 02:46
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 20 años, 9 meses
Puntos: 0
Exclamación keybd_event ALT + TAB

Quiero que me aparezca el menú de los programas que están en ejecución que aparece cuando se presionan las teclas ALT y TABULADOR. Para ello utilizo la API keybd_event, pero debo de hacer algo mal, porque este menú no aparece por ningún lado. Se lo quiero asignar a un botón, y luego asingarle a otro boton la función del tabulador para poder elegir el programa que quiero que me aparezca en pantalla, para finalmenete decidir (mediante otro botón) cual es que pasará a estar en primer plano (soltará el ALT)

No me sirve con esta API? Alguien puede echarme una mano?

Muchas gracias
  #2 (permalink)  
Antiguo 25/05/2005, 06:41
 
Fecha de Ingreso: mayo-2005
Mensajes: 93
Antigüedad: 19 años
Puntos: 1
No sé si te he entendido bien.

El problema reside en que la combinación ALT+TAB pertenece a windows, por lo que si quieres capturarla por programa en vb no te hace caso porque la prioridad de respuesta la tiene el propio windows.

No sé si lo que quieres es poder pasar entre las pantallas MDIChild de un formulario MDI general. Si es así, fácilmente puedes tener un opción menú ventanas en el que vas añadiendo las pantallas abiertas según se van abriendo y quitandolas en caso de cerrarlas.

Es decir tienes una opción del menu del MDI (PADRE o GENERAL) llamada "Ventanas" y seleccionas el tic en sus propiedades como WindowList, así, automáticamente tendrás debajo de ese menú, que como pertenece al MDI padre o general siempre estará visible mientras esté la aplicación funcionando, en el que te aparecerán listadas todas las pantallas que tienes abiertas en cada momento.

Te recomiendo que en el MDI ta,bién tengas una tollbar para facilitar la selección de las diferentes pantallas.

Espero haber sido de ayuda

Un saludo
  #3 (permalink)  
Antiguo 26/05/2005, 03:34
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 20 años, 9 meses
Puntos: 0
De acuerdo

En mi proyecto hay un único formulario, y lo que quiero es poder moverme por los programas que tengo en ejecución en el sistema, no en mi propio proyecto. Pero ya he conseguido solucionarlo, gracias por tu ayuda de todas formas.

Lo he solucionado utilizando el API keybd_event de la siguiente forma:
With the first sentence the menu I want to see doesn't appear, and the form is executing minimizate.
With the second sentence the menu appeared for only a few seconds and one of the programms are running is oppened.

Option Explicit

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Const KEYEVENTF_KEYUP = &H2
Const VK_TAB = &H9
Const VK_MENU = &H12

Private Sub Command1_Click()
keybd_event VK_MENU, 0, 0, 0
keybd_event VK_TAB, 0, 0, 0
End Sub

Private Sub Command2_Click()
keybd_event VK_TAB, 0, 0, 0
keybd_event VK_TAB, 0, KEYEVENTF_KEYUP, 0
End Sub

Con el botón Command1 abriré el menú, y con el botón Command2 me moveré por el menún para excoger el programa que quiero. (Una vez que haya excogido el programa que me interesa se ejecutará la siguiente sentencia:

keybd_event VK_MENU,0,KEYEVENTF_KEYUP,0
  #4 (permalink)  
Antiguo 26/05/2005, 12:41
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Eso no te funcionará

Enviar las teclas Alt+Tab no te funcionará de ninguna manera, pues al soltarlas el menú desaparece, lo mejor que te puedo aconsejar es hacer tu propia lista de ventanas en un ListBox, si no sabes, dime y te cuento como hacerlo, ok
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 30/05/2005, 01:07
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 20 años, 9 meses
Puntos: 0
Cita:
Iniciado por David el Grande
Enviar las teclas Alt+Tab no te funcionará de ninguna manera, pues al soltarlas el menú desaparece, lo mejor que te puedo aconsejar es hacer tu propia lista de ventanas en un ListBox, si no sabes, dime y te cuento como hacerlo, ok

Si mantengo la tecla ALT pulsada el menú sí sigue visible. Esto lo consigo con el evento keybd_event VK_MENU, 0, 0, 0. Para cerrar el menú (y así poner delante la ventana seleccionada) ejecutaré el evento de soltar la tecla ALT: keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0

Ya lo he probado, y funciona muy bien.
Gracias por tu ayuda de todas formas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:55.