[Resolu]fenetres, programmes barre des taches...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

[Resolu]fenetres, programmes barre des taches...

Message par Le psychopathe »

Bonsoir
Voilà mon problème :
Je cherche à controler le status d'applications externes, plus particulièrement savoir si la fenetre ou l'application (comme vous voulez) se trouvent réduites ou non dans la barre des tâches. Et biensûr savoir comment faire pour réduire ou restaurer l'application externe.
J'espère que l'on me comprend xd
Dernière modification par Le psychopathe le mer. 18/juil./2007 9:47, modifié 1 fois.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

salut,

c'est pas trop difficile mais il faut passer par les API windows.

en plus il y a plusieurs facons de faire ( ShowWindow_() ou SetWindowPlacement_() ).

Code : Tout sélectionner

;-
;-
;-

Enumeration ; fenêtres
  #WNDMAIN
EndEnumeration

Enumeration ; gadgets
  #GADLIST
  #GADREFRESH
  #GADMINIMIZE
  #GADMAXIMIZE
  #GADFLASH
EndEnumeration

Enumeration ; colonnes
  #COLTITLE
  #COLCLASS
  #COLSTYLE
  #COLEXSTYLE
EndEnumeration

Macro GetClassName(hWindow)
  PeekS(@StrGetClassName.s{256}, GetClassName_(hWindow, @StrGetClassName.s{256}, 256))
EndMacro
Macro GetWindowText(hWindow)
  PeekS(@StrGetWindowText.s{256}, GetWindowText_(hWindow, @StrGetWindowText.s{256}, 256))
EndMacro

Procedure.l EnumWindowsCallBack(hWindow.l, lParam.l)
  
  Protected item.l, WndIcon.l, WndStyle.l, WndStyles.s, WndExStyle.l, WndExStyles.s
  
  If IsWindow_(hWindow) And Not GetWindowLong_(hWindow, #GWL_HWNDPARENT)
    
    WndStyle   = GetWindowLong_(hWindow, #GWL_STYLE)
    WndExStyle = GetWindowLong_(hWindow, #GWL_EXSTYLE)
    
    If ( WndStyle & #WS_VISIBLE ) And ( WndStyle & #WS_CAPTION ) And ( Not WndExStyle & #WS_EX_TOOLWINDOW ) 
      
      If ( WndStyle & #WS_MINIMIZE ) : WndStyles + "Minimize, " : EndIf
      If ( WndStyle & #WS_MAXIMIZE ) : WndStyles + "Maximize, " : EndIf
      
      If ( WndExStyle & #WS_EX_TOPMOST )   : WndExStyles + "TopMost, "   : EndIf
      If ( WndExStyle & #WS_EX_APPWINDOW ) : WndExStyles + "AppWindow, " : EndIf
      
      If Not WndIcon : WndIcon = SendMessage_(hWindow, #WM_GETICON, 0, 0) : EndIf
      If Not WndIcon : WndIcon = GetClassLong_(hWindow, #GCL_HICONSM)     : EndIf
      If Not WndIcon : WndIcon = GetClassLong_(hWindow, #GCL_HICON)       : EndIf
      If Not WndIcon : WndIcon = LoadIcon_(0, #IDI_APPLICATION)           : EndIf
      
      item = CountGadgetItems(lParam) 
      
      If AddGadgetItem(lParam, item, #Null$, WndIcon)
        SetGadgetItemText(lParam, item, GetWindowText(hWindow), #COLTITLE)
        SetGadgetItemText(lParam, item, GetClassName(hWindow),  #COLCLASS)
        SetGadgetItemText(lParam, item, WndStyles,              #COLSTYLE)
        SetGadgetItemText(lParam, item, WndExStyles,            #COLEXSTYLE)
        SetGadgetItemColor(lParam, item, #PB_Gadget_BackColor, $F0F0F0, #COLCLASS)
        SetGadgetItemColor(lParam, item, #PB_Gadget_BackColor, $F0F0F0, #COLEXSTYLE)
        SetGadgetItemData(lParam, item, hWindow)
      EndIf
      
    EndIf
    
  EndIf
  
  ProcedureReturn #True
  
EndProcedure

;-
;-
;-

width  = 510
height = 250

If OpenWindow(#WNDMAIN, 0, 0, width, height, "Mes fenêtres", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
  
  StickyWindow(#WNDMAIN, #True)
  
  If CreateGadgetList(WindowID(#WNDMAIN))
    
    ListIconGadget(#GADLIST, 5, 5, width-10, height-45, "Titre", 200, #PB_ListIcon_FullRowSelect)
    AddGadgetColumn(#GADLIST, #COLCLASS,   "Classe",  90)
    AddGadgetColumn(#GADLIST, #COLSTYLE,   "Style",   90)
    AddGadgetColumn(#GADLIST, #COLEXSTYLE, "ExStyle", 90)
    
    ButtonGadget(#GADREFRESH,    5, height-30, 100, 25, "Actualiser")
    ButtonGadget(#GADMINIMIZE, 110, height-30, 100, 25, "Minimiser")
    ButtonGadget(#GADMAXIMIZE, 215, height-30, 100, 25, "Maximiser")
    ButtonGadget(#GADFLASH,    320, height-30, 100, 25, "Flasher")
    
    DisableGadget(#GADMINIMIZE, #True)
    DisableGadget(#GADMAXIMIZE, #True)
    DisableGadget(#GADFLASH,    #True)
    
  EndIf
  
  Repeat
    
    Select WaitWindowEvent()
      
      Case #PB_Event_CloseWindow
        Break
        
      Case #PB_Event_Gadget
        
        Select EventGadget() 
          
          Case #GADLIST
            If EventType() = #PB_EventType_Change
              If GetGadgetState(#GADLIST) = -1
                DisableGadget(#GADMINIMIZE, #True)
                DisableGadget(#GADMAXIMIZE, #True)
                DisableGadget(#GADFLASH,    #True)
              Else
                DisableGadget(#GADMINIMIZE, #False)
                DisableGadget(#GADMAXIMIZE, #False)
                DisableGadget(#GADFLASH,    #False)
              EndIf
            EndIf
            
          Case #GADREFRESH
            ClearGadgetItemList(#GADLIST)
            EnumWindows_(@EnumWindowsCallBack(), #GADLIST)
            
          Case #GADMINIMIZE
            ShowWindow_(GetGadgetItemData(#GADLIST, GetGadgetState(#GADLIST)), #SW_SHOWMINIMIZED)
            
          Case #GADMAXIMIZE
            ShowWindow_(GetGadgetItemData(#GADLIST, GetGadgetState(#GADLIST)), #SW_SHOWMAXIMIZED)
            
          Case #GADFLASH
            FlashWindow_(GetGadgetItemData(#GADLIST, GetGadgetState(#GADLIST)), #False)
            
        EndSelect
        
    EndSelect
    
  ForEver
  
EndIf

End

;-
;-
;-
Image
Répondre