Page 1 sur 1

comment cacher l'execution d'une fenetre ?

Publié : lun. 15/août/2005 12:58
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 :)

Publié : lun. 15/août/2005 15:28
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

Publié : lun. 15/août/2005 19:41
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

merci nico :)

Publié : mar. 16/août/2005 11:48
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:

Publié : mar. 16/août/2005 12:11
par nico
Désolé, mais là je suis sur le point de partir en vacances..... :lol:

Publié : mar. 16/août/2005 13:54
par noob
j'me debrouillerai bonne vacances :)