Ya lo encontré, babosos. Gracias por nada. :twisted: :mrgreen:
Código (en Visual FoxPro):
Enviado por LuisMaria en Viernes, 04 Mayo, 2007
Con algunas funciones de la API de Windows, podemos manejar la barra de tareas de Windows, ocultandola, desabilitandola, y hasta darle un nivel de tansparencia.
Funciones API para la barra de tareas
Por Luis María Guayán, Tucumán, Argentina
Existen algunas funciones API que nos permiten ajustar algunas configuraciones de la Barra de Tareas de Windows.
En este artículo veremos la manera de mostrar, ocultar, habilitar, deshabilitar y hacer porcentualmente transparente la barra de tareas.
También podremos controlar los objetos contenidos en la barra de tareas, como el área de notificación (SysTray) y sus elementos, como los íconos y el reloj.
Guarde el siguiente código como TaskBar.PRG:
Define Class TaskBar As Custom
Procedure Init
Declare Integer FindWindow In "user32" ;
String lpClassName, String lpWindowName
Declare Integer FindWindowEx In "user32" ;
Integer HWnd, Integer hWnd2, ;
String lpsz1, String lpsz2
Declare Integer GetWindowLong In "user32" ;
Integer HWnd, Integer nIndex
Declare Integer SetWindowLong In "user32" ;
Integer HWnd, Integer nIndex, Integer dwNewLong
Declare Integer SetLayeredWindowAttributes In "user32" ;
Integer HWnd, Integer crey, ;
Integer bAlpha, Integer dwFlags
Declare Integer ShowWindow In "user32" ;
Integer HWnd, Integer nCmdShow
Declare Integer EnableWindow In "user32" ;
Integer HWnd, Integer fEnable
Endproc
Proc BarraDeTareaVisible(tlVisible)
Local lnHWndShell_TrayWnd
lnHWndShell_TrayWnd = FindWindow("Shell_TrayWnd", 0)
If lnHWndShell_TrayWnd <> 0
ShowWindow(lnHWndShell_TrayWnd, Iif(tlVisible, 1, 0))
Endif
Endproc
Proc BarraDeTareaHabilitada(tlEnabled)
Local lnHWndShell_TrayWnd
lnHWndShell_TrayWnd = FindWindow("Shell_TrayWnd", 0)
If lnHWndShell_TrayWnd <> 0
EnableWindow(lnHWndShell_TrayWnd, tlEnabled)
Endif
Endproc
Procedure RelojVisible(tlVisible)
Local lnHWndShell_TrayWnd, lnHWndTrayNotifyWnd, lnHWndTrayClockWClass
lnHWndShell_TrayWnd = FindWindow("Shell_TrayWnd", 0)
lnHWndTrayNotifyWnd = FindWindowEx(lnHWndShell_TrayWnd, 0, "TrayNotifyWnd", 0)
lnHWndTrayClockWClass = FindWindowEx(lnHWndTrayNotifyWnd, 0, "TrayClockWClass", 0)
If lnHWndTrayClockWClass <> 0
ShowWindow(lnHWndTrayClockWClass, Iif(tlVisible,1,0))
Endif
Endproc
Procedure SystrayVisible(tlVisible)
Local lnHWndShell_TrayWnd, lnHWndTrayNotifyWnd
lnHWndShell_TrayWnd = FindWindow("Shell_TrayWnd", 0)
lnHWndTrayNotifyWnd = FindWindowEx(lnHWndShell_TrayWnd, 0, "TrayNotifyWnd", 0)
If lnHWndTrayNotifyWnd <> 0
ShowWindow(lnHWndTrayNotifyWnd, Iif(tlVisible,1,0))
Endif
Endproc
Procedure IconosVisible(tlVisible)
Local lnHWndShell_TrayWnd, lnHWndTrayNotifyWnd, lnHWndSyspager
lnHWndShell_TrayWnd = FindWindow("Shell_TrayWnd", 0)
lnHWndTrayNotifyWnd = FindWindowEx(lnHWndShell_TrayWnd, 0, "TrayNotifyWnd", 0)
lnHWndSyspager = FindWindowEx(lnHWndTrayNotifyWnd, 0, "Syspager", 0)
If lnHWndSyspager <> 0
ShowWindow(lnHWndSyspager, Iif(tlVisible,1,0))
Endif
Endproc
Procedure InicioRapidoVisible(tlVisible)
Local lnHWndShell_TrayWnd, lnHWndReBarWindow32, lnHWndToolbarWindow32
lnHWndShell_TrayWnd = FindWindow("Shell_TrayWnd", 0)
lnHWndReBarWindow32 = FindWindowEx(lnHWndShell_TrayWnd, 0, "ReBarWindow32", 0)
lnHWndToolbarWindow32 = FindWindowEx(lnHWndReBarWindow32, 0, "ToolbarWindow32", 0)
If lnHWndToolbarWindow32 <> 0
ShowWindow(lnHWndToolbarWindow32, Iif(tlVisible,1,0))
Endif
Endproc
Procedure BarraDeTareaTransparente(tnLevel)
Local lnLevel, lnOldStyle, lnWndShell_TrayWnd
lnLevel = 0xFF - Max(0,Min(Int(tnLevel*255/100),255))
lnHWndShell_TrayWnd = FindWindow("Shell_TrayWnd", 0)
If lnHWndShell_TrayWnd <> 0
lnOldStyle = GetWindowLong(lnHWndShell_TrayWnd, -20)
SetWindowLong(lnHWndShell_TrayWnd, -20, Bitor(lnOldStyle, 0x80000))
SetLayeredWindowAttributes(lnHWndShell_TrayWnd, 0, lnLevel, 0x2)
Endif
Endproc
Enddefine
A continuación la instancia de la clase y algunos ejemplos de sus métodos.
*-- Instanciamos la clase TaskBar en TaskBar.prg
loTB = NEWOBJECT("TaskBar", "TaskBar.prg")
*-- Barra de tarea no visible
loTB.BarraDeTareaVisible(.F.)
*-- Barra de tarea visible
loTB.BarraDeTareaVisible(.T.)
*-- Area de notificación no visible
loTB.SysTrayVisible(.F.)
*-- Area de notificación visible
loTB.SysTrayVisible(.T.)
*-- Barra de tarea 75% transparente
loTB.BarraDeTareaTransparente(75)
*-- Barra de tarea 25% transparente
loTB.BarraDeTareaTransparente(25)
*-- Barra de tarea 0% transparente
loTB.BarraDeTareaTransparente(0)
Hasta la próxima,
Luis María