Cherche testeur avec Vista

Programmation d'applications complexes
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Rha, je dois pas trouvé le bon ComboBox, ca doit lire le combobox de recherche ou un truc de ce genre, il faut que je verrouille plus ma recherche de la barre d'adresse
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Et comme ça

toujours le même principe :
J'ai besoin du contenu de la fenêtre de debug en résultat
et de savoir si vous avez l'explorateur d'ouvert sous "c:\windows"
et si il n'y a plus de bordure et de barre de titre sur la fenêtre de l'explorateur, merci.

Code : Tout sélectionner

Global Recherche_BarreAdresse, ExploreurID, Exploreur_Adresse_ID 

Procedure Recherche_BarreAdresse(hwnd.l, lParam.l) 
  Protected Class.s
  Memoire = AllocateMemory(50)
  GetClassName_(hwnd, Memoire, 50)
  Class = PeekS(Memoire)
  If Class = "Edit"
    hwnd_parent = GetParent_(hwnd) ; ComboBox
    Debug "Class Edit"
    Adresse.s = Space(#MAX_PATH) 
    SendMessage_(hwnd, #WM_GETTEXT, #MAX_PATH, @Adresse) 
    Debug Adresse
    GetClassName_(hwnd_parent, Memoire, 50)
    Class = PeekS(Memoire)
    If Class = "ComboBox" 
      Debug "Class ComboBox"
      If OSVersion() = #PB_OS_Windows_Vista 
        hwnd_parent = GetParent_(hwnd_parent) ; ComboBoxEx32 
        hwnd_parent = GetParent_(hwnd_parent) ; msctls_progress32 
        hwnd_parent = GetParent_(hwnd_parent) ; Address Band Root
        GetClassName_(hwnd_parent, Memoire, 50)
        Class = PeekS(Memoire)
        If Class = "Address Band Root"
          Debug "Class Address Band Root"
          Recherche_BarreAdresse = hwnd
        EndIf
      Else
        Recherche_BarreAdresse = hwnd
      EndIf
    EndIf 
  EndIf 
  FreeMemory(Memoire)
  ProcedureReturn #True 
EndProcedure 

Procedure Ouvre_Exploreurs() 
  Protected NewList Liste_Fenetres() 
  
  ; On liste les fenêtres visibles 
  hwnd.l = FindWindow_(0, 0) 
  While hwnd <> 0 
    If GetWindowLong_(hwnd, #GWL_STYLE) & #WS_VISIBLE And GetWindowLong_(hwnd, #GWL_STYLE) & #WS_SYSMENU And GetWindowLong_(hwnd, #GWL_STYLE) & #WS_BORDER And GetParent_(hwnd) = 0 
      AddElement(Liste_Fenetres()) 
      Liste_Fenetres() = hwnd 
    EndIf 
    hwnd = GetWindow_(hwnd, #GW_HWNDNEXT) 
  Wend 
  
  ; Exploreur 
  RunProgram("explorer.exe", "/e,/n,c:\", "") 
  
  ; Recherche des Exploreurs 
  Temps = ElapsedMilliseconds() 
  Repeat 
    Delay(100) ; On attend un peu 
    hwnd.l = FindWindow_(0, 0) 
    While hwnd And ExploreurID = 0 
      If GetWindowLong_(hwnd, #GWL_STYLE) & #WS_VISIBLE And GetWindowLong_(hwnd, #GWL_STYLE) & #WS_SYSMENU And GetWindowLong_(hwnd, #GWL_STYLE) & #WS_BORDER And GetParent_(hwnd) = 0 
        LastWindowID = hwnd 
        ; On recherche si la fenêtre existait déjà 
        ForEach Liste_Fenetres() 
          If LastWindowID = Liste_Fenetres() 
            LastWindowID = 0 
            Break 
          EndIf 
        Next 
      EndIf 
      If LastWindowID ; on a trouvé une nouvelle fenêtre 
        Debug "nouvelle fenêtre trouvée" 
        Debug LastWindowID 
        Recherche_BarreAdresse = 0 
        EnumChildWindows_(LastWindowID, @Recherche_BarreAdresse(), 0) 
        If Recherche_BarreAdresse 
          Debug "Barre d'aresse" 
          Debug Recherche_BarreAdresse 
          Adresse.s = Space(#MAX_PATH) 
          SendMessage_(Recherche_BarreAdresse, #WM_GETTEXT, #MAX_PATH, @Adresse) 
          Debug "'" + Adresse  + "'" 
          If LCase(Adresse) = "c:\" 
            Debug ">> Exploreur" 
            ExploreurID = LastWindowID 
            Exploreur_Adresse_ID = Recherche_BarreAdresse 
          EndIf 
        EndIf 
        AddElement(Liste_Fenetres()) 
        Liste_Fenetres() = hwnd 
      Else 
        hwnd = GetWindow_(hwnd, #GW_HWNDNEXT) 
      EndIf 
    Wend 
    
    If ElapsedMilliseconds() - Temps > 10000 
      MessageRequester("Erreur", "Pas d'explorateur trouvé") 
      End 
    EndIf 
    
  Until ExploreurID <> 0 
  
  
  ; Intégration des 2 Exploreurs dans le programme 
  SetWindowLong_(ExploreurID, #GWL_HWNDPARENT, WindowID(0)) 
  SetWindowLong_(ExploreurID, #GWL_STYLE, GetWindowLong_(ExploreurID, #GWL_STYLE) & ~#WS_TILEDWINDOW) 
  
  MoveWindow_(ExploreurID, 100, 100, 500, 300, 1) 
  
  ; Chargement de dossier 
  SendMessage_(Exploreur_Adresse_ID, #WM_SETTEXT, 0, "c:\windows\") 
  SendMessage_(Exploreur_Adresse_ID, #WM_KEYDOWN, #VK_RETURN, 0) 
  SendMessage_(Exploreur_Adresse_ID, #WM_KEYUP, #VK_RETURN, 0) 
  
  
  
EndProcedure 



; Création de la fenêtre et de la GadgetList 
If OpenWindow(0, 0, 0, 800, 600, "Test", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget) = 0 Or CreateGadgetList(WindowID(0)) = 0 
  End 
EndIf 

Ouvre_Exploreurs() 

Repeat 
  Event = WaitWindowEvent() 
  
  Select Event 
    Case #PB_Event_Menu 
      Select EventMenu() ; Menus 
          
      EndSelect 
      
    Case #PB_Event_Gadget 
      Select EventGadget() ; Gadgets 
          
      EndSelect 
  EndSelect 
  
Until Event = #PB_Event_CloseWindow 

PostMessage_(ExploreurID, #WM_CLOSE, 0, 0) 

End
Dernière modification par Le Soldat Inconnu le dim. 16/nov./2008 15:21, modifié 1 fois.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

J'ai globalement la même chose que montre le screen de Jacobus

je récaplitule:

Ouverture de l'explorateur, racine C:\
(ce qui ne semblait pas être le cas sur le screen de Jacobus)

ensuite, fenetre de debug:

Code : Tout sélectionner

nouvelle fenêtre trouvé
262798
Barre d'aresse
262808
"
nouvelle fenêtre trouvé
262734
nouvelle fenêtre trouvé
394126
puis, apparait: Erreur: Pas d'explorateur trouvé.

Voilà.
Force et sagesse...
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Même topo en gros.
J'ai essayé de modifier l'accès au répertoire en utilisant l'api ShellExecute_() ce qui ouvre bien c:\Windows\ mais les effets secondaires sont les mêmes...

Code : Tout sélectionner

Global Recherche_BarreAdresse, ExploreurID, Exploreur_Adresse_ID 

Procedure.s GetWindowsSystemDirectory()
  Path.s=Space(500)
  GetSystemDirectory_(@Path,500)
  ProcedureReturn Path
EndProcedure

Procedure Recherche_BarreAdresse(hwnd.l, lParam.l) 
  Protected Class.s 
  Memoire = AllocateMemory(50) 
  GetClassName_(hwnd, Memoire, 50) 
  Class = PeekS(Memoire) 
  If Class = "Edit" 
    hwnd_parent = GetParent_(hwnd) ; ComboBox 
    GetClassName_(hwnd_parent, Memoire, 50) 
    Class = PeekS(Memoire) 
    If Class = "ComboBox" 
      If OSVersion() = #PB_OS_Windows_Vista 
        hwnd_parent = GetParent_(hwnd_parent) ; ComboBoxEx32 
        hwnd_parent = GetParent_(hwnd_parent) ; msctls_progress32 
        hwnd_parent = GetParent_(hwnd_parent) ; Address Band Root 
        GetClassName_(hwnd_parent, Memoire, 50) 
        Class = PeekS(Memoire) 
        If Class = "Address Band Root" 
          Recherche_BarreAdresse = hwnd 
        EndIf 
      Else 
        Recherche_BarreAdresse = hwnd 
      EndIf 
    EndIf 
  EndIf 
  FreeMemory(Memoire) 
  ProcedureReturn #True 
EndProcedure 

Procedure Ouvre_Exploreurs() 
  Protected NewList Liste_Fenetres() 
  
  ; On liste les fenêtres visibles 
  hwnd.l = FindWindow_(0, 0) 
  While hwnd <> 0 
    If GetWindowLong_(hwnd, #GWL_STYLE) & #WS_VISIBLE And GetWindowLong_(hwnd, #GWL_STYLE) & #WS_SYSMENU And GetWindowLong_(hwnd, #GWL_STYLE) & #WS_BORDER And GetParent_(hwnd) = 0 
      AddElement(Liste_Fenetres()) 
      Liste_Fenetres() = hwnd 
    EndIf 
    hwnd = GetWindow_(hwnd, #GW_HWNDNEXT) 
  Wend 
  
  ; Exploreur 
  ;RunProgram("explorer.exe", "/e,/n,c:\", "")
  ShellExecute_(0,"explore",GetPathPart(GetSystemDirectory()),0,0,1) 
  
  ; Recherche des Exploreurs 
  Temps = ElapsedMilliseconds() 
  Repeat 
    Delay(100) ; On attend un peu 
    hwnd.l = FindWindow_(0, 0) 
    While hwnd And ExploreurID = 0 
      If GetWindowLong_(hwnd, #GWL_STYLE) & #WS_VISIBLE And GetWindowLong_(hwnd, #GWL_STYLE) & #WS_SYSMENU And GetWindowLong_(hwnd, #GWL_STYLE) & #WS_BORDER And GetParent_(hwnd) = 0 
        LastWindowID = hwnd 
        ; On recherche si la fenêtre existait déjà 
        ForEach Liste_Fenetres() 
          If LastWindowID = Liste_Fenetres() 
            LastWindowID = 0 
            Break 
          EndIf 
        Next 
      EndIf 
      If LastWindowID ; on a trouvé une nouvelle fenêtre 
        Debug "nouvelle fenêtre trouvée" 
        Debug LastWindowID 
        Recherche_BarreAdresse = 0 
        EnumChildWindows_(LastWindowID, @Recherche_BarreAdresse(), 0) 
        If Recherche_BarreAdresse 
          Debug "Barre d'aresse" 
          Debug Recherche_BarreAdresse 
          Adresse.s = Space(#MAX_PATH) 
          SendMessage_(Recherche_BarreAdresse, #WM_GETTEXT, #MAX_PATH, @Adresse) 
          Debug "'" + Adresse  + "'" 
          If LCase(Adresse) = "c:\" 
            Debug ">> Exploreur" 
            ExploreurID = LastWindowID 
            Exploreur_Adresse_ID = Recherche_BarreAdresse 
          EndIf 
        EndIf 
        AddElement(Liste_Fenetres()) 
        Liste_Fenetres() = hwnd 
      Else 
        hwnd = GetWindow_(hwnd, #GW_HWNDNEXT) 
      EndIf 
    Wend 
    
    If ElapsedMilliseconds() - Temps > 10000 
      MessageRequester("Erreur", "Pas d'explorateur trouvé") 
      End 
    EndIf 
    
  Until ExploreurID <> 0 
  
  
  ; Intégration des 2 Exploreurs dans le programme 
  SetWindowLong_(ExploreurID, #GWL_HWNDPARENT, WindowID(0)) 
  SetWindowLong_(ExploreurID, #GWL_STYLE, GetWindowLong_(ExploreurID, #GWL_STYLE) & ~#WS_TILEDWINDOW) 
  
  MoveWindow_(ExploreurID, 100, 100, 500, 300, 1) 
  
  ; Chargement de dossier 
  SendMessage_(Exploreur_Adresse_ID, #WM_SETTEXT, 0, "c:\windows\") 
  SendMessage_(Exploreur_Adresse_ID, #WM_KEYDOWN, #VK_RETURN, 0) 
  SendMessage_(Exploreur_Adresse_ID, #WM_KEYUP, #VK_RETURN, 0) 
  
  
  
EndProcedure 



; Création de la fenêtre et de la GadgetList 
If OpenWindow(0, 0, 0, 800, 600, "Test", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget) = 0 Or CreateGadgetList(WindowID(0)) = 0 
  End 
EndIf 

Ouvre_Exploreurs() 

Repeat 
  Event = WaitWindowEvent() 
  
  Select Event 
    Case #PB_Event_Menu 
      Select EventMenu() ; Menus 
          
      EndSelect 
      
    Case #PB_Event_Gadget 
      Select EventGadget() ; Gadgets 
          
      EndSelect 
  EndSelect 
  
Until Event = #PB_Event_CloseWindow 

PostMessage_(ExploreurID, #WM_CLOSE, 0, 0) 

End
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

non, non, faut pas utiliser shellexecute

Ce que je cherche à faire, c'est
- de trouver la fenêtre de l'explorateur
- de lire le contenu de la barre d'adresse
- de changer le contenu de la barre d'adresse
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Bon, j'ai mis des debug partout dans le dernier code pour trouvé ce qui ne va pas.

Pouvez vous me donnez le contenu de la fenêtre de debug, merci

Lancer le code précédent, je l'ai mis à jour
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

meme résultat niveau comportement, avec dans la fenêtre debug ceci:

Code : Tout sélectionner

nouvelle fenêtre trouvée
393836
Class Edit

Class ComboBox
Class Address Band Root
Class Edit

Class Edit

Barre d'aresse
459366
''
nouvelle fenêtre trouvée
393848
Class Edit

Class ComboBox
nouvelle fenêtre trouvée
459388
Force et sagesse...
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

rhaaa zut alors

Je chope bien la bonne zone d'édition mais je n'arrive pas à lire le texte contenu dans la barre d'adresse. C'est quoi ce bazar ...
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

on recommence avec un autre code pour annalyser la zone d'adresse

vous ne donnez pas le fcous à la barre d'adresse, vous placez juste la souris au dessus.

vous attendez que la barre de progression soit pleine
vous cliquez sur figer et vous copier le résultat ici

Pas compatible pb 4.3, je précise, if faut modifier l'api WindowFromPoint_( à la ligne 190 sinon

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4.20
;
; Explication du programme :
; Obtenir des informations sur la fenêtre sous la souris, ainsi que toutes les fenêtres parentes.

Structure Style_Info
  Value.l
  Text.s
EndStructure
Global NewList style.Style_Info()
;{ Liste des styles
AddElement(Style()) : Style()\Value = #WS_BORDER : Style()\Text = "#WS_BORDER"
AddElement(Style()) : Style()\Value = #WS_CAPTION : Style()\Text = "#WS_CAPTION"
AddElement(Style()) : Style()\Value = #WS_CHILD : Style()\Text = "#WS_CHILD"
AddElement(Style()) : Style()\Value = #WS_CHILDWINDOW : Style()\Text = "#WS_CHILDWINDOW"
AddElement(Style()) : Style()\Value = #WS_CLIPCHILDREN : Style()\Text = "#WS_CLIPCHILDREN"
AddElement(Style()) : Style()\Value = #WS_CLIPSIBLINGS : Style()\Text = "#WS_CLIPSIBLINGS"
AddElement(Style()) : Style()\Value = #WS_DISABLED : Style()\Text = "#WS_DISABLED"
AddElement(Style()) : Style()\Value = #WS_DLGFRAME : Style()\Text = "#WS_DLGFRAME"
AddElement(Style()) : Style()\Value = #WS_GROUP : Style()\Text = "#WS_GROUP"
AddElement(Style()) : Style()\Value = #WS_HSCROLL : Style()\Text = "#WS_HSCROLL"
AddElement(Style()) : Style()\Value = #WS_ICONIC : Style()\Text = "#WS_ICONIC"
AddElement(Style()) : Style()\Value = #WS_MAXIMIZE : Style()\Text = "#WS_MAXIMIZE"
AddElement(Style()) : Style()\Value = #WS_MAXIMIZEBOX : Style()\Text = "#WS_MAXIMIZEBOX"
AddElement(Style()) : Style()\Value = #WS_MINIMIZE : Style()\Text = "#WS_MINIMIZE"
AddElement(Style()) : Style()\Value = #WS_MINIMIZEBOX : Style()\Text = "#WS_MINIMIZEBOX"
AddElement(Style()) : Style()\Value = #WS_OVERLAPPED : Style()\Text = "#WS_OVERLAPPED"
AddElement(Style()) : Style()\Value = #WS_OVERLAPPEDWINDOW : Style()\Text = "#WS_OVERLAPPEDWINDOW"
AddElement(Style()) : Style()\Value = #WS_POPUP : Style()\Text = "#WS_POPUP"
AddElement(Style()) : Style()\Value = #WS_POPUPWINDOW : Style()\Text = "#WS_POPUPWINDOW"
AddElement(Style()) : Style()\Value = #WS_SIZEBOX : Style()\Text = "#WS_SIZEBOX"
AddElement(Style()) : Style()\Value = #WS_SYSMENU : Style()\Text = "#WS_SYSMENU"
AddElement(Style()) : Style()\Value = #WS_TABSTOP : Style()\Text = "#WS_TABSTOP"
AddElement(Style()) : Style()\Value = #WS_THICKFRAME : Style()\Text = "#WS_THICKFRAME"
AddElement(Style()) : Style()\Value = #WS_TILED : Style()\Text = "#WS_TILED"
AddElement(Style()) : Style()\Value = #WS_TILEDWINDOW : Style()\Text = "#WS_TILEDWINDOW"
AddElement(Style()) : Style()\Value = #WS_VISIBLE : Style()\Text = "#WS_VISIBLE"
AddElement(Style()) : Style()\Value = #WS_VSCROLL : Style()\Text = "#WS_VSCROLL"
;}

Global NewList StyleEx.Style_Info()
;{ Liste des styles étendus
AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_ACCEPTFILES : StyleEx()\Text = "#WS_EX_ACCEPTFILES"
; AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_CAPTIONOKBTN : StyleEx()\Text = "#WS_EX_CAPTIONOKBTN"
AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_CLIENTEDGE : StyleEx()\Text = "#WS_EX_CLIENTEDGE"
; AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_CONTEXTMENU : StyleEx()\Text = "#WS_EX_CONTEXTMENU"
AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_DLGMODALFRAME : StyleEx()\Text = "#WS_EX_DLGMODALFRAME"
; AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_INK : StyleEx()\Text = "#WS_EX_INK"
#WS_EX_LAYERED = $00080000
AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_LAYERED : StyleEx()\Text = "#WS_EX_LAYERED"
AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_LAYOUTRTL : StyleEx()\Text = "#WS_EX_LAYOUTRTL"
AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_LTRREADING : StyleEx()\Text = "#WS_EX_LTRREADING"
AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_NOACTIVATE : StyleEx()\Text = "#WS_EX_NOACTIVATE"
; AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_NOANIMATION : StyleEx()\Text = "#WS_EX_NOANIMATION"
; AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_NODRAG : StyleEx()\Text = "#WS_EX_NODRAG"
AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_NOINHERITLAYOUT : StyleEx()\Text = "#WS_EX_NOINHERITLAYOUT"
AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_OVERLAPPEDWINDOW : StyleEx()\Text = "#WS_EX_OVERLAPPEDWINDOW"
AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_PALETTEWINDOW : StyleEx()\Text = "#WS_EX_PALETTEWINDOW"
AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_RTLREADING : StyleEx()\Text = "#WS_EX_RTLREADING"
AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_STATICEDGE : StyleEx()\Text = "#WS_EX_STATICEDGE"
AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_TOOLWINDOW : StyleEx()\Text = "#WS_EX_TOOLWINDOW"
AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_TOPMOST : StyleEx()\Text = "#WS_EX_TOPMOST"
AddElement(StyleEx()) : StyleEx()\Value = #WS_EX_WINDOWEDGE : StyleEx()\Text = "#WS_EX_WINDOWEDGE"
;}

Procedure Analyse_Window(hwnd.l)
  
  Niveau = 0
  Element = -1
  ClearGadgetItemList(0)
  
  Repeat
    
    If Niveau = 0
      Element + 1 : AddGadgetItem(0, Element, "Sous la souris", 0, 0)
    Else
      Element + 1 : AddGadgetItem(0, Element, "Parent " + Str(Niveau), 0, 0)
    EndIf
    
    Element + 1 : AddGadgetItem(0, Element, "hWnd = " + Str(hwnd), 0, 1)
    SetGadgetItemState(0, Element - 1, #PB_Tree_Expanded)
    
    Text1.s = Space(255)
    GetWindowText_(hwnd, @Text1, 255)
    Text2.s = Space(255)
    SendMessage_(hwnd, #WM_GETTEXT, 255, @Text2)
    If Text1 Or Text2
      Element + 1 : AddGadgetItem(0, Element, "Text", 0, 1)
    EndIf
    If Text1
      Element + 1 : AddGadgetItem(0, Element, "GetWindowText_(...) = " + Text1, 0, 2)
    EndIf
    If Text2
      Element + 1 : AddGadgetItem(0, Element, "SendMessage_(...) = " + Text2, 0, 2)
    EndIf
    If (Text1 And Text2 = "") Or (Text1 = "" And Text2)
      SetGadgetItemState(0, Element - 1, #PB_Tree_Expanded)
    ElseIf Text1 And Text2
      SetGadgetItemState(0, Element - 2, #PB_Tree_Expanded)
    EndIf
    
    Class.s = Space(255)
    GetClassName_(hwnd, @Class, 256)
    If Class
      Element + 1 : AddGadgetItem(0, Element, "Class = " + Class, 0, 1)
    EndIf
    
    Element + 1 : AddGadgetItem(0, Element, "Size", 0, 1)
    GetWindowRect_(hwnd, Size.RECT)
    Element + 1 : AddGadgetItem(0, Element, "Left = " + Str(Size\left) + " / Right = " + Str(Size\right), 0, 2)
    SetGadgetItemState(0, Element - 1, #PB_Tree_Expanded)
    Element + 1 : AddGadgetItem(0, Element, "Top = " + Str(Size\top) + " / Bottom = " + Str(Size\bottom), 0, 2)
    Element + 1 : AddGadgetItem(0, Element, "Width = " + Str(Size\right - Size\left), 0, 2)
    Element + 1 : AddGadgetItem(0, Element, "Height = " + Str(Size\bottom - Size\top), 0, 2)
    
    
    Window_Style = GetWindowLong_(hwnd, #GWL_STYLE)
    If Window_Style
      Element + 1 : AddGadgetItem(0, Element, "Style", 0, 1)
      ForEach Style()
        If Window_Style & Style()\Value
          Element + 1 : AddGadgetItem(0, Element, Style()\Text, 0, 2)
        EndIf
      Next
    EndIf
    
    Window_StyleEx = GetWindowLong_(hwnd, #GWL_EXSTYLE)
    If Window_StyleEx
      Element + 1 : AddGadgetItem(0, Element, "Style Ex", 0, 1)
      ForEach StyleEx()
        If Window_StyleEx & StyleEx()\Value
          Element + 1 : AddGadgetItem(0, Element, StyleEx()\Text, 0, 2)
        EndIf
      Next
    EndIf
    
    hwnd = GetParent_(hwnd)
    Niveau + 1
  Until hwnd = 0
  
  
EndProcedure

#Rafraichissement = 1000
#Vitesse = 50
#Temps_Max = #Rafraichissement / #Vitesse

#Largeur = 220

; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, #Largeur, 464, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0 Or CreateGadgetList(WindowID(0)) = 0
  End
EndIf

StickyWindow(0, 1)

TreeGadget(0, 0, 0, #Largeur, 400)
ButtonGadget(1, 0, 400, #Largeur, 22, "Figer", #PB_Button_Toggle)
ButtonGadget(2, 0, 422, #Largeur, 22, "Copier")
ProgressBarGadget(3, 0, 444, #Largeur, 20, 0, #Temps_Max, #PB_ProgressBar_Smooth)

SetTimer_(WindowID(0), 1, #Vitesse, 0)
Temps = 0

Repeat
  Event = WaitWindowEvent()
  
  Select Event
      
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1
          Figer = GetGadgetState(1)
        Case 2
          Texte.s = ""
          For n = 0 To CountGadgetItems(0) - 1
            For Niveau = 1 To GetGadgetItemAttribute(0, n, #PB_Tree_SubLevel)
              Texte + Chr(9)
            Next
            Texte + GetGadgetItemText(0, n)
            Texte + Chr(13) + Chr(10)
          Next
          SetClipboardText(Texte)
      EndSelect
      
    Case #WM_TIMER
      Select EventwParam()
        Case 1
          Survol_Souris = WindowFromPoint_(DesktopMouseX(), DesktopMouseY())
          If Survol_Souris = Survol_Souris_Memoire And Figer = 0
            If Temps = #Temps_Max
              Analyse_Window(Survol_Souris)
              Temps + 1
            Else
              Temps + 1
              SetGadgetState(3, Temps)
            EndIf
          Else
            Temps = 0
            SetGadgetState(3, Temps)
            Survol_Souris_Memoire = Survol_Souris
          EndIf
      EndSelect
  EndSelect
  
Until Event = #PB_Event_CloseWindow

KillTimer_(WindowID(0), 1)

End
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

voici ce que j'obtiens:

Code : Tout sélectionner

Sous la souris
	hWnd = 1377146
	Class = SysTreeView32
	Size
		Left = 730 / Right = 950
		Top = 303 / Bottom = 703
		Width = 220
		Height = 400
	Style
		#WS_CHILD
		#WS_CHILDWINDOW
		#WS_MAXIMIZEBOX
		#WS_OVERLAPPEDWINDOW
		#WS_TABSTOP
		#WS_TILEDWINDOW
		#WS_VISIBLE
	Style Ex
		#WS_EX_CLIENTEDGE
		#WS_EX_OVERLAPPEDWINDOW
Parent 1
	hWnd = 1180670
	Text
		GetWindowText_(...) = Window
		SendMessage_(...) = Window
	Class = WindowClass_0
	Size
		Left = 727 / Right = 953
		Top = 280 / Bottom = 770
		Width = 226
		Height = 490
	Style
		#WS_BORDER
		#WS_CAPTION
		#WS_CLIPSIBLINGS
		#WS_DLGFRAME
		#WS_GROUP
		#WS_MINIMIZEBOX
		#WS_OVERLAPPEDWINDOW
		#WS_POPUPWINDOW
		#WS_SYSMENU
		#WS_TILEDWINDOW
		#WS_VISIBLE
	Style Ex
		#WS_EX_OVERLAPPEDWINDOW
		#WS_EX_PALETTEWINDOW
		#WS_EX_TOPMOST
		#WS_EX_WINDOWEDGE
Force et sagesse...
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Heu, mets bien la souris au dessus de la barre d'adresse et pas au dessus de la liste des fichiers :roll: , j'suis chiant hein :)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Le Soldat Inconnu a écrit :, j'suis chiant hein :)
Oui, mais comme je suis dur à la détente .... ;)

Nouvelle essais, en espérant cette fois fait ce qu'il faut:

Code : Tout sélectionner

Sous la souris
	hWnd = 2753460
	Text
		GetWindowText_(...) = Adresse : C:\Users\tmyke\AppData\Roaming\Microsoft\Windows\Start Menu
		SendMessage_(...) = Adresse : C:\Users\tmyke\AppData\Roaming\Microsoft\Windows\Start Menu
	Class = ToolbarWindow32
	Size
		Left = 2344 / Right = 2766
		Top = 144 / Bottom = 166
		Width = 422
		Height = 22
	Style
		#WS_CHILD
		#WS_CHILDWINDOW
		#WS_CLIPCHILDREN
		#WS_CLIPSIBLINGS
		#WS_VISIBLE
Parent 1
	hWnd = 1770282
	Class = Breadcrumb Parent
	Size
		Left = 2344 / Right = 2766
		Top = 144 / Bottom = 166
		Width = 422
		Height = 22
	Style
		#WS_CHILD
		#WS_CHILDWINDOW
		#WS_CLIPCHILDREN
		#WS_CLIPSIBLINGS
		#WS_VISIBLE
Parent 2
	hWnd = 1508108
	Class = msctls_progress32
	Size
		Left = 2344 / Right = 2810
		Top = 144 / Bottom = 166
		Width = 466
		Height = 22
	Style
		#WS_CHILD
		#WS_CHILDWINDOW
		#WS_CLIPCHILDREN
		#WS_VISIBLE
Parent 3
	hWnd = 787252
	Class = Address Band Root
	Size
		Left = 2342 / Right = 2812
		Top = 143 / Bottom = 167
		Width = 470
		Height = 24
	Style
		#WS_CHILD
		#WS_CHILDWINDOW
		#WS_CLIPCHILDREN
		#WS_CLIPSIBLINGS
		#WS_MAXIMIZEBOX
		#WS_OVERLAPPEDWINDOW
		#WS_TABSTOP
		#WS_TILEDWINDOW
		#WS_VISIBLE
Parent 4
	hWnd = 2753528
	Class = ReBarWindow32
	Size
		Left = 2272 / Right = 3056
		Top = 139 / Bottom = 174
		Width = 784
		Height = 35
	Style
		#WS_CHILD
		#WS_CHILDWINDOW
		#WS_CLIPCHILDREN
		#WS_CLIPSIBLINGS
		#WS_GROUP
		#WS_MINIMIZEBOX
		#WS_OVERLAPPEDWINDOW
		#WS_TILEDWINDOW
		#WS_VISIBLE
	Style Ex
		#WS_EX_PALETTEWINDOW
		#WS_EX_TOOLWINDOW
Parent 5
	hWnd = 983830
	Text
		GetWindowText_(...) = Barre de navigation
		SendMessage_(...) = Barre de navigation
	Class = WorkerW
	Size
		Left = 2272 / Right = 3056
		Top = 139 / Bottom = 174
		Width = 784
		Height = 35
	Style
		#WS_CHILD
		#WS_CHILDWINDOW
		#WS_CLIPCHILDREN
		#WS_CLIPSIBLINGS
		#WS_VISIBLE
	Style Ex
Parent 6
	hWnd = 3277790
	Text
		GetWindowText_(...) = Menu Démarrer
		SendMessage_(...) = Menu Démarrer
	Class = CabinetWClass
	Size
		Left = 2264 / Right = 3064
		Top = 111 / Bottom = 711
		Width = 800
		Height = 600
	Style
		#WS_BORDER
		#WS_CAPTION
		#WS_CLIPSIBLINGS
		#WS_DLGFRAME
		#WS_GROUP
		#WS_MAXIMIZEBOX
		#WS_MINIMIZEBOX
		#WS_OVERLAPPEDWINDOW
		#WS_POPUPWINDOW
		#WS_SIZEBOX
		#WS_SYSMENU
		#WS_TABSTOP
		#WS_THICKFRAME
		#WS_TILEDWINDOW
		#WS_VISIBLE
	Style Ex
		#WS_EX_OVERLAPPEDWINDOW
		#WS_EX_PALETTEWINDOW
		#WS_EX_WINDOWEDGE

Force et sagesse...
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

C'est toujours sous vista que tu veux les résultats ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

oui, sous vista.

Et je cale, faut que je fasse un autre code pour lister tous les gadgets de l'explorateur afin de voir comment retrouver le texte de la barre d'adresse.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Je sais pourquoi tu cales. Sous Vista, si mes souvenirs sont bons, le chemin est découpé de gauche à droite. Par exemple, avec C:\Windows\System32, tu as 3 fenêtres (moi j'appelle ça des fenêtres mais tu peux appeler ça comme tu veux). Tu as la fenêtre C:, la fenêtre Windows et la fenêtre System32.

Bref : un vrai merdier mais faisable. Seulement, moi je n'ai pas le temps cte semaine.

J'espère déjà que la problématique est cernée.
Répondre