FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Taskbar Utilities
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Taskbar Utilities
Posted: Wed Nov 26, 2008 03:18 PM
i hope this work for someone

#include "fivewin.ch"

function MainTest()

   local oWnd, oBar
   local oTB := TaskBar()
   local n := 0

   DEFINE WINDOW oWnd TITLE "Test Task Bar"

   DEFINE BUTTONBAR oBar _3D OF oWnd

   DEFINE BUTTON OF oBar  ;
      ACTION  oTB:HideShowTaskBar() ;
      MESSAGE "Muestra/Oculta TaskBar"

   DEFINE BUTTON OF oBar ;
      ACTION oTB:HideShowClock();
      MESSAGE "Muestra/Oculta Reloj"

	 DEFINE BUTTON OF oBar ;
      ACTION oTB:HideShowStartButton();
      MESSAGE "Muestra Oculta StartButton"


 	 DEFINE BUTTON OF oBar ;
      ACTION ( oTB:EnaDisTaskBar( ) ) ;
      MESSAGE "Enable/ Disable TaskBar"

 	 DEFINE BUTTON OF oBar ;
      ACTION ( oTB:EnaDisStartButton( ) ) ;
      MESSAGE "Enable/ Disable StartButton"

 	 DEFINE BUTTON OF oBar ;
      ACTION ( oTB:HideShowSysTray() ) ;
      MESSAGE "Enable/ Disable StartButton"

 	 DEFINE BUTTON OF oBar ;
      ACTION ( oTB:HideShowIcons() ) ;
      MESSAGE "Enable/ Disable Icons"

 	 DEFINE BUTTON OF oBar ;
      ACTION ( oTB:HideShowQuickStar() ) ;
      MESSAGE "Enable/ Disable QuickStar"

 	 DEFINE BUTTON OF oBar ;
      ACTION ( oTB:HideShowTask() ) ;
      MESSAGE "Enable/ Disable Task"
      
   DEFINE BUTTON OF oBar ;
      ACTION ( oTB:TransTaskBar( n+=10 ) ) ;
      MESSAGE "Enable/ Disable Task"

   DEFINE BUTTON OF oBar ;
      ACTION ( oTB:Default() ) ;
      MESSAGE "Enable/ Disable Task"


  
   SET MESSAGE OF oWnd TO "Class TaskBar" CENTERED

   ACTIVATE WINDOW oWnd


//////////////////////////////////////////////////////////////////////////////
// CLASS TaskBar
// Clase que permite ocultar y desaparecer elementos de la barra de tareas de windows
// la variable lForce se usa para obligar la accion en cada metodo
// si se desea mostrar/ocultar forzosamente un elemnto usar lForce := .t. / .f.
// segun la nesecidad, pero cada metodo lo hace automaticamente dependiendo del estado
// nLevel en el methodo TransTaskBar indica el nivel porcentual de transparencia
// methodo default, restaura los valores forzando todos los elementos a .t. y 0 % transparecia
///////////////////////////////////////////////////////////////////////////////////
// CLASS TaskBar
// Hide/Show windows TaskBar element 
// lForce variable used for force "action" into each methods
// to show use lForce = .t., to Hide lForce = .f.
// nLevel variable used into TransTaskBar method is porcentual level transparent
// method default, rsstore initial values, force all element to .t. 0% transparent
///////////////////////////////////////////////////////////////////////////////

#define SW_HIDE         		0  
#define SW_NORMAL         	1  
#define GW_HWNDNEXT 				2
#define GW_CHILD						5
#define GWL_EXSTYLE					-20
#define N_STATUS_ED					1
#define N_STATUS_VI					2
#define WS_EX_LAYERED 		 	524288
#define LWA_ALPHA						2



class TaskBar


method HideShowTaskBar( lForce ) 			
method HideShowStartButton( lForce ) 
method HideShowClock( lForce )
method EnaDisTaskBar( lForce )
method EnaDisStartButton( lForce )
method HideShowSysTray( lForce )
method HideShowIcons( lForce )
method HideShowQuickStar( lForce )
method HideShowTask( lForce )
method TransTaskBar( nLevel )
method Default()

endclass



method Default()	class TaskBar
	::HideShowTaskBar( .t. )
	::HideShowStartButton( .t. )
	::HideShowClock( .t. )
	::EnaDisTaskBar( .t. )
	::EnaDisStartButton( .t. )
	::HideShowSysTray( .t. )
	::HideShowIcons( .t. )
	::HideShowQuickStar( .t. )
	::HideShowTask( .t. )
	::TransTaskBar( 0 )
return


Method HideShowStartButton( lForce ) class TaskBar
Local hChild

default lForce := NIL
 
    If ( hChild:=fhStartButton() ) != 0
    	ShowHide( hChild, lForce )
    endif
hChild := NIL
return nil


Method HideShowClock( lForce ) class TaskBar
local hChild

default lForce := NIL

    If ( hChild := fhClock() ) != 0
    	ShowHide( hChild, lForce )
    endif
    
hChild = NIL
return NIL

Method HideShowTaskBar( lForce ) class TaskBar
local hTrayWnd

default lForce := NIL

    If ( hTrayWnd := fhTaskBar() )  != 0
    	ShowHide( hTrayWnd, lForce )
    endif
hTrayWnd = NIL

return NIL

Method HideShowSystray( lForce ) class TaskBar
Local hNotifyWnd

default lForce := NIL

    If ( hNotifyWnd := fhTrayNotify() ) != 0
      ShowHide( hNotifyWnd, lForce )
    Endif
    
hTrayNotifyWnd = NIL    
return


method HideShowIcons( lForce ) class TaskBar
local hSysPager
default lForce := NIL

    If ( hSysPager := fhSysPager() ) != 0
      ShowHide( hSysPager, lForce )
    Endif
    
hSysPager = NIL    

return			

method HideShowQuickStar( lForce ) class TaskBar
local hQuickStar
default lForce := NIL

    If ( hQuickStar := fhQuickStar() ) != 0
    	ShowHide( hQuickStar, lForce )  
    Endif
    
hQuickStar = NIL    

return			


method HideShowTask( lForce ) class TaskBar
local hTask
default lForce := NIL

    If ( hTask := fhTask() ) != 0
    	ShowHide( hTask, lForce )  
    Endif
    
hTask = NIL    

return			


method  EnaDisTaskBar( lForce ) class TaskBar
Local hTrayWnd
default lForce := NIL
    hTrayWnd = fhTaskBar()
    If hTrayWnd != 0
    	if lForce == NIL
      	EnableWindow(hTrayWnd, if ( IsWindowEnabled( hTrayWnd ),.f.,.t.) )
      else
      	if lForce
      		EnableWindow(hTrayWnd, .t.) 
      	else
      		EnableWindow(hTrayWnd, .f.) 
      	Endif
      endif
    Endif
hTrayWnd = NIL    
return

method  EnaDisStartButton( lForce ) class TaskBar
Local hStartB
default lForce := NIL

    If ( hStartB := fhStartButton()) != 0
    	if lForce == NIL
      	EnableWindow(hStartB, if ( IsWindowEnabled( hStartB ),.f.,.t.) )
      else
      	if lForce
      		EnableWindow(hStartB, .t. )
      	else
      		EnableWindow(hStartB, .f. )
      	Endif
      endif
    Endif
hStartB = NIL
return


method TransTaskBar( nLevel ) class TaskBar
Local nTrans, nOldStyle, hTrayWnd

    nTrans = 255 - Max(0, Min( Int( nLevel*255/100),255 ) )
    
    If ( hTrayWnd := fhTaskBar() ) != 0
      nOldStyle = GetWindowLong(hTrayWnd, GWL_EXSTYLE)
      SetWindowLong(hTrayWnd, GWL_EXSTYLE, nOr(nOldStyle, WS_EX_LAYERED))
      SetLayeredWindowAttributes(hTrayWnd, 0, nTrans, LWA_ALPHA)
    Endif

return


static function fhClock
Local hChild

 		hChild 		:= GetWindow( fhTrayNotify(), GW_CHILD )
    do while upper( GetClassName ( hChild ) ) != "TRAYCLOCKWCLASS"
    	hChild := GetWindow (hChild, GW_HWNDNEXT)
    enddo

return hChild


static function fhStartButton
local hTrayWnd, hChild

    hTrayWnd 	:= fhTaskBar()
    hChild 		:= GetWindow ( hTrayWnd, GW_CHILD )
    do while upper( GetClassName ( hChild ) ) != "BUTTON"
    	hChild := GetWindow(hChild, GW_HWNDNEXT)
    enddo

return hChild

static Function fhTrayNotify()
local hChild

    hChild 		:= GetWindow ( fhTaskBar(), GW_CHILD )
    do while upper( GetClassName ( hChild ) ) != "TRAYNOTIFYWND"
    	hChild := GetWindow(hChild, GW_HWNDNEXT)
    enddo

return hChild

static Function fhSysPager()

 		hChild 		:= GetWindow( fhTrayNotify(), GW_CHILD )
    do while upper( GetClassName ( hChild ) ) != "SYSPAGER"
    	hChild := GetWindow (hChild, GW_HWNDNEXT)
    enddo
    
return hChild

static Function fhQuickStar()
local hChild 

    hChild 		:= GetWindow ( fhTaskBar(), GW_CHILD )
    do while upper( GetClassName ( hChild ) ) != "REBARWINDOW32"
    	hChild := GetWindow(hChild, GW_HWNDNEXT)
    enddo
    hChild 		:= GetWindow ( hChild, GW_CHILD )
    do while upper( GetClassName ( hChild ) ) != "TOOLBARWINDOW32"
    	hChild := GetWindow(hChild, GW_HWNDNEXT)
    enddo
		
    
return hChild

static Function fhTask()
local hChild 

    hChild 		:= GetWindow ( fhTaskBar(), GW_CHILD )
    do while upper( GetClassName ( hChild ) ) != "REBARWINDOW32"
    	hChild := GetWindow(hChild, GW_HWNDNEXT)
    enddo
    hChild 		:= GetWindow ( hChild, GW_CHILD )
    do while upper( GetClassName ( hChild ) ) != "MSTASKSWWCLASS"
    	hChild := GetWindow(hChild, GW_HWNDNEXT)
    enddo
		
    
return hChild


static function fhTaskBar
return FindWindow("Shell_TrayWnd", 0)

static procedure ShowHide( hWnd, lForce )

   	if lForce == NIL
     	ShowWindow(hWnd, if( IsWindowVisible( hWnd ), SW_HIDE, SW_NORMAL ) )
    else
     	if lForce
     		ShowWindow(hWnd, SW_NORMAL )
     	else
     		ShowWindow(hWnd, SW_HIDE  )
     	endif
    endif
    
return

Continue the discussion