fenetre qui ne se voit pas en bas !

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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é ! :))
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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 :?
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message 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)
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Merci Gillou ! :)

Effectivement c'est mieux :D
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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 :(
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

........
Dernière modification par Backup le mar. 19/août/2014 12:54, modifié 1 fois.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Joli code Gillou :wink:
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Merci pour tes precisions Gillou :)
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Superbe ce code ! Merci Gillou !
Répondre