comment cacher l'execution d'une fenetre ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
noob
Messages : 16
Inscription : dim. 14/août/2005 12:14

comment cacher l'execution d'une fenetre ?

Message par noob »

je suis en train de réaliser ,tant bien que mal, un menu deroulant se situant en haut de mon ecran. Une barre de raccourcis tout simplement qui se masque et s'affiche au passage de la souris :)

L'objectif est donc de demarrer ce petit prog au demarrage du pc pour que je puisse beneficié de cette barre à tout moment.

Oui mais je m'aperçois que dès que j'execute mon programme (qui n'est pas encore au point lol) j'ai une petite fenetre qui souvre dans ma barre windows.
je sais pas si c'est clair
(ex: si on ouvre word et qu'ensuite on ouvre excel y a une petite fenetre "word" dans la barre de windows en bas et dans ce cas c'est normal puisqu'elle permet de passser de l'un a l'autre)


Dans mon cas je n'est pas besoins de ce rappel dans la barre xp puisque ma fentere apparait au passage de la souris :roll:


Enfait il faudrai que mon programme s'execute en tant que processus je pense ainsi il serai invisble.!



je joint mon script : (ca vous aidera peut-etre a comprendre mon prob :) )

Code : Tout sélectionner

Global actmode,resux 
resux = GetSystemMetrics_(#SM_CXSCREEN) 

Procedure IsMouseOver(wnd) ; Détection de la souris 
GetWindowRect_(wnd,re.RECT) 
GetCursorPos_(pt.POINT) 
If actmode=0 
If WindowFromPoint_(pt\x,pt\y)=wnd 
result=1 
EndIf 
Else 
result=PtInRect_(re,pt\x,pt\y) 
EndIf 
ProcedureReturn result 
EndProcedure 

Procedure CheckWindow(id) ; apparition de la fenêtre 
wnd=UseWindow(id) 
inside=IsMouseOver(wnd) 
actwindow=GetForegroundWindow_() 
If inside 
If actmode=0 
actmode=1 : MoveWindow(0,0) 
EndIf 
Else 
If actmode=1 And actwindow 
actmode=0 
For i=-1 To -60 Step -4 
MoveWindow(0,i):WindowEvent():Delay(20) 
Next i 
EndIf 
EndIf 
ProcedureReturn actmode 
EndProcedure 

OpenWindow(0, 0, -59, resux,60,#PB_Window_BorderLess ,"Menu déroulant")
 
CreateGadgetList(WindowID()) 
ExplorerListGadget(#ico_0, 0, 0, 710, 100, "c:\raccourcis\", #PB_Explorer_NoParentFolder)
ChangeListIconGadgetDisplay(#Window_0, 4)

SetForegroundWindow_(GetDesktopWindow_()) 


Repeat 

If CheckWindow(0) And WindowEvent() 
If WindowEvent()=#PB_EventGadget 

    
    
    If EventGadgetID()  = #ico_0 
 
If  RunProgram(GetGadgetItemText(#ico_0,GetGadgetState(#ico_0) , 0)) 
EndIf 
  


EndIf

  
End 
EndIf 
EndIf 

Delay(4) 
ForEver
Merci

ps: vous remarquerez qu'il y a d'autres problemes :)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Si c'est la barre de tâche qui te pose problème, il suffit de rajouter au style étendue de ta fenêtre la constante: WS_EX_TOOLWINDOW
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Je t'ai fait un petit code qui fonctionne:

Code : Tout sélectionner

Global actmode,resux 
resux = GetSystemMetrics_(#SM_CXSCREEN) 

Procedure TimerProc(Hwnd.l, uMsg.l, idEvent.l, dwTime.l) 
  Static show.l
  Select uMsg 
    Case #WM_TIMER 
      Select idEvent 
        Case 1 
          GetCursorPos_(@point.point)
          
          If show=0
            If point\y=0
              show=1
              Debug "afficher"
              SetForegroundWindow_(Hwnd) 
              ShowWindow_(Hwnd,#sw_show)
            EndIf
            
          ElseIf show=1
            If point\y>60
              show=0
              Debug "cacher"
              ShowWindow_(Hwnd,#sw_hide)
            EndIf          
          EndIf 
          
      EndSelect 
  EndSelect 
EndProcedure 


#main=0
#ExplorerList=0
#Quit=1

OpenWindow(#main, 0, 0, resux,60,#PB_Window_BorderLess|#PB_Window_Invisible ,"Menu déroulant") 
Style_etendu=GetWindowLong_(WindowID(#main),#GWL_EXSTYLE)
SetWindowLong_(WindowID(#main),#GWL_EXSTYLE,Style_etendu|#WS_EX_TOOLWINDOW) 
CreateGadgetList(WindowID()) 
ExplorerListGadget(#ExplorerList, 0, 0, resux-80, 60, "c:\raccourcis\", #PB_Explorer_NoParentFolder) 
ButtonGadget(#Quit,resux-70,10,60,20,"Quitter")
ChangeListIconGadgetDisplay(0, 4) 

settimer_(WindowID(#main),1, 200, @TimerProc()) 

Repeat 
  EventID=WaitWindowEvent()
  Select EventID
    Case #PB_EventGadget
      Select EventGadgetID()
          
        Case #Quit
          quit.l=1
          
        Case #ExplorerList
          Select EventType()
            Case #PB_EventType_LeftDoubleClick
              nom$= (GetGadgetItemText(#ExplorerList,GetGadgetState(#ExplorerList) , 0)) 
              nom_complet$="c:\raccourcis\"+nom$
              If nom$
                Debug nom_complet$
                RunProgram(nom_complet$)
              EndIf 
          EndSelect 
      EndSelect 
      
    Case #WM_CLOSE
      quit=1
      
  EndSelect 
Until quit=1
noob
Messages : 16
Inscription : dim. 14/août/2005 12:14

merci nico :)

Message par noob »

OULALAH alors là,MERCI ! :P

Tu a tous a fait cerné ce que je voulai obtenir, trop fort !

Le hic c'est que je comprend pas grand chose a ce que tu as fait mais avec une base comme ca je devrai pouvoir m'en sortir ( une fois que je l'aurai assimilé lol )

si tu pe poster quelque commentaire sur ton script nico ca pourrai m'aider!

j'essai de comprendre tout ca (y en as pour un moment :) )

sinon j'ai une idée complementaire,que j'expose rapidement :
ajouter un menu deroulant entre la fenetre et le bouton fermer qui permet de selectionner quel dossier afficher ( par defaut c:\raccourcis)


Enfin bon j'en suit pas encore la!!

Merci beaucoup pour votre aide :wink:
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Désolé, mais là je suis sur le point de partir en vacances..... :lol:
noob
Messages : 16
Inscription : dim. 14/août/2005 12:14

Message par noob »

j'me debrouillerai bonne vacances :)
Répondre