Page 2 sur 2

Publié : lun. 30/juin/2008 13:09
par Kwai chang caine
Flype a écrit :une autre méthode plus simple :

Code : Tout sélectionner

Procedure RemoveFromTaskbar(hwnd) 
  If IsWindow_(hwnd) 
    a=hwnd : b=GetWindowLong_(a,#GWL_HWNDPARENT) : If b<>0 : a=b : EndIf ; Needed for "TaskAssign.exe". 
    ShowWindow_(a,#SW_HIDE) : GetWindowRect_(a,win.RECT) : w=win\right-win\left : h=win\bottom-win\top 
    SetWindowLong_(a,#GWL_EXSTYLE,#WS_EX_TOOLWINDOW) :  SetWindowPos_(a,0,0,0,w-1,h-1,#SWP_NOMOVE) 
    SetWindowPos_(a,0,0,0,w,h,#SWP_NOMOVE|#SWP_SHOWWINDOW) : ProcedureReturn 1 
  EndIf 
EndProcedure 

Debug RemoveFromTaskbar(FindWindow_(0,"titre de la fenetre")) 

Le code de FLYPE y marche à donf :D
Tellement y marche bien que j'arrive plus a faire réapparaitre la fenetre de mon appli exterieure dans la barre des taches :oops:

Quelqu'un a t'il l'antidote ??? :roll:

Publié : lun. 30/juin/2008 13:44
par Backup
dans le code que tu donne , tu fais

Code : Tout sélectionner

ShowWindow_(a,#SW_HIDE)
ce serai pas un
ShowWindow_(a,#SW_SHOW)
qu'il faudrai faire pour inverser ? 8O (pas testé ! :))

Publié : lun. 30/juin/2008 15:29
par Kwai chang caine
Bonjour DOBRO

Bah non, le fait de changer HIDE en SHOW montre la fenetre sur le bureau, mais elle ne reapparait pas dans la barre des taches :?

Publié : lun. 30/juin/2008 17:36
par Progi1984
Remplace plutot

Code : Tout sélectionner

SetWindowLong_(a,#GWL_EXSTYLE,#WS_EX_TOOLWINDOW)
par

Code : Tout sélectionner

SetWindowLong_(a,#GWL_EXSTYLE, 0)
ou

Code : Tout sélectionner

SetWindowLong_(a,#GWL_EXSTYLE,~#WS_EX_TOOLWINDOW)

Publié : lun. 30/juin/2008 20:44
par Gillou
ça faisait longtemps, salut à tous!

Plus de librairie, merci les interfaces

mon code mis au goût du jour :


Global TaskBarList.iTaskBarList
ProcedureDLL HideFromTaskbar(Window, state) ; Cache la fenêtre de la barre des tâches
     If state = 0
        TaskBarList\AddTab( WindowID (Window)) ; Montrer la fenêtre
     Else
        TaskBarList\DeleteTab( WindowID (Window)) ; Cacher la fenêtre
     EndIf
EndProcedure

ProcedureDLL InitHideFromTaskbar() ; Initialise le mode cacher de la barre des tâches
     CoInitialize_ (0)
     CoCreateInstance_ (?CLSID_TaskbarList, 0, 1, ?IID_ITaskbarList, @TaskBarList)
    TaskBarList\HrInit() ; Initialiser l'objet
     DataSection
        CLSID_TaskbarList :
         Data.l $56FDF344
         Data.w $FD6D, $11D0
         Data.b $95, $8A, $00, $60, $97, $C9, $A0, $90
        IID_ITaskbarList :
         Data.l $56FDF342
         Data.w $FD6D, $11D0
         Data.b $95, $8A, $00, $60, $97, $C9, $A0, $90
     EndDataSection
EndProcedure

ProcedureDLL EndHideFromTaskbar() ; Coupe le mode cacher de la barre des tâches
    TaskBarList\Release()
     CoUninitialize_ ()
EndProcedure

#Window =1
#bouton =1

InitHideFromTaskbar()

OpenWindow ( #Window ,10,10,300,300, "coucou" , #PB_Window_SystemMenu )
CreateGadgetList ( WindowID ( #Window ))
ButtonGadget ( #bouton , 10,10, 250, 20, "fait réaparaitre dans la barres des taches" )
HideFromTaskbar( #Window , 1) ; <--- retire la fenetre de la barre des taches

state = #True
Repeat
     Select WaitWindowEvent ()
         Case #PB_Event_Gadget
             Select EventGadget ()
                 Case #bouton
                     If state = #True
                        state = #False
                        HideFromTaskbar( #Window , 0)
                     Else
                        state = #True
                        HideFromTaskbar( #Window , 1)
                     EndIf
             EndSelect
         Case #PB_Event_CloseWindow ; If the user has pressed on the close button
            Break
     EndSelect
ForEver

Publié : lun. 30/juin/2008 21:15
par Backup
Merci Gillou ! :)

Effectivement c'est mieux :D

Publié : mar. 01/juil./2008 8:13
par Kwai chang caine
Merci gilou.
Le probleme c'est que c'est une application exterieure que je souhaite cacher/montrer.
Donc je travaille avec son handle

J'ai bien tenté de remplacer ton "WindowID (Window)" par Hwnd, mais ça ne marche pas :(

Publié : mar. 01/juil./2008 8:57
par Backup
........

Publié : mar. 01/juil./2008 9:27
par Kwai chang caine
Merci les amis !!!

Exactement ce que je voulais :D
GILLOU tu te fait trop rare :cry:

Encore merci à GILLOU et DOBRO
Bonne journée

Publié : mar. 01/juil./2008 17:18
par Droopy
Joli code Gillou :wink:

Publié : mar. 01/juil./2008 22:10
par Gillou
Content que ça vous plaît ;)

Kwai Chang Caine, Dobro a répondu pour moi 8)

Vous pouvez aussi utilisé d'autres paramètres de l'interface :

Pour activer la fenêtre dans la barre des tâches :
TaskBarList\ActivateTab(WindowID(#Window))

ou pour activer la fenêtre (dans les processus) sans que cela soit visible:
TaskBarList\SetActiveAlt(WindowID(#Window))

D'autres infos ici:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx

Publié : mar. 01/juil./2008 22:29
par Backup
Merci pour tes precisions Gillou :)

Publié : mar. 01/juil./2008 23:25
par Ar-S
Superbe ce code ! Merci Gillou !