Sección de código fuente Visual basic
No voy a comentar todo el código por que hay algunas funciones Api que no pillo bien, posiblemente cuando las entienda al 100% agregaré algunos comentarios y actualizo la página, pero basicamente el programa consta de un formulario que se coloca en la posición de la barra de tareas de Windows, y al hacer esto el task bar de win se oculta.
Los botones que forman las ventanas se crean en tiempo de ejecución con la función Load para cada ventana, y se descargan con unload cada ves que se cierra una (aunque no es tan asi de simple el tema)
Una vista previa:
La barra de tareas se posiciona en forma Always on Top (por encima de las demás) para que de este modo esté siempre visible. Esto es mediante la función Api SetWindowPos
En la carga del Form también como se dijo, se oculta la barra de windows, usando el Api ShowWindow y FindWindow. Con FindWindow captura el Hwnd del taskbar de windows pasandole el nombre de la clase llamado "Shell_TrayWnd". Luego al tener el handle se oculta con ShowWindow. Una ves que se descarga el Form o programa se reestablece y se deja todo como estaba
Para capturar la barra Tray (subrutina llamada CapturarTray) e insertarla en el formulario (que en realidad no se inserta en el formulario si no en un boton llamado Hora que está dentro del formulario taskbar y contiene al systray de windows), se utiliza el Api FindWindow y FindWindowEx. Esto se realiza en 4 pasos ya que no es tan simple capturar el área de notificación con las Api mencionadas utilizando los nombres de clases y demás. Al tener el Hwnd final que corresponde al Systray, viene la parte fácil, se inserta mediante el Api SetParent, la barra tray en el formulario (dentro del botón Hora).
La barra de tareas también tiene un Inicio rápido o QuickLaunch.
Cuando los botones de inicio rápido no están todos visibles, se puede usar un menú PopUp al pulsar el botón de la flecha. Si se desplaza un Picture llamado Size, en el evento Mouse Move del mismo se crean en tiempo de ejecución los accesos directos pero en botones en ves de un menú popup y se posicionan uno al lado del otro como está en la imagen:
Lo anterior se realiza con una Sub llamada moveSplit0 donde se le pasa la posición xdel split (eso está dentro del MouseMove del Picture Size). A partir de ahi, se reposiciona todo lo demás, es decir los botones de inicio rápido, las ventanas abiertas etc.... Hay 2 Picture que cumplen la función de separador uno llamado Size(0) el que está en la imagen anterior y el otro Size(1) que es el de la otra punta.
Para los botones de las ventanas de la barra de tareas, apenas se arranca el programa se llama a una Sub AgregarBotones. Esta tiene 3 parámetros, el primero es un String con el Caption de la ventana, el segundo es el Hwnd y el tercero es un picturebox llamado P1 que está oculto y que contiene el ícono de la ventana.
El caption y el Hwnd está almacenado en un array dinámico . Este array está asociado a un TYPE que tiene estas 2 variables:
Type T_Ventanas1
n As String
h As Long
End Type
La variable n corresponde al nombre de la ventana de windows abierta (el caption) y la variable h al hwnd de la misma.
Este array siempre se encuentra actualizado con las ventanas abiertas. Esto se realiza dentro de un Timer que chequea constantemente a las mismas, para de este modo poder crear los botones dinámicamente o eliminarlos. El temporizador o timer está hecho con el Api SetTimer. También se utiliza un array dinámico exactamente igual al anterior llamado aVentanas2 para verificar si se cerrro alguna Ventanta comparandolo con el aVentanas1
Bueno esto es mas o menos un pantallazo, por último el taskBar utiliza 2 Ocx. Uno llamado KewlButtonz.ocx que es para los botones. El otro se llama HookMenu.ocx que es para los menú estilo Xp. Este último Ocx es como el conocido SmartMenu, yo es la primera ves que lo veo con este programa, y por lo que estube viendo creo que es mejor, consume menos recursos, es mas fácil implementarlo, está compuesto de un solo archivo (el SmartMenu está compuesto de 2, un ocx y una dll).
Los 2 Ocx son gratuitos y de libre uso, y ya están incluidos en el fuente, si lo querés descargar por separado lo subí a la sección de ocx y Activex
Nota importante: Para que no te de error al cargar el proyecto tenés que registrar los 2 ocx desde la línea de comandos. Otra cosa muy importante, es que al probar el proyecto, no lo cierres nunca con el Stop del Ide, hacelo con el menu "cerrar" que aparece al dar click derecho sobre el taskBar, porque de lo contrario, la barra de tareas de windows queda invisible, y tendrás que reiniciar el explorer o reiniciar la máquina.
Esto ocurre por que al terminar con el Stop, no se ejecuta el Form Unload que dispara la Sub Barra que le indica que restaure la de windows.
Si te querés comunicar con Leandro lo podés hacer a este mail:
Descargar código fuente - TaskBar
Buscar en Recursos vb
Recursos visual basic - Buscar - Privacidad - Copyright © 2005 - 2009 - www.recursosvisualbasic.com.ar