J'ai besoin que vous lanciez ce code.
Avant de le lancer, il faut activer dans les options de l'explorateur la barre d'adresse
ensuite lancer le code :
Ce que vous devez obtenir :
- Un explorateur sans bordure
- Le dossier C:\Windows\ ouvert
- Quand vous minimiser la fenêtre Test, l'explorateur doit se minimiser aussi
Le programme s'arrête tout seul au bout de 10s si ca marche pas
Si ca ne marche pas, je peux avoir le contenu de la fenêtre de debug

Merci
Le code à tester :
Code : Tout sélectionner
Global Recherche_BarreAdresse, ExploreurID, Exploreur_Adresse_ID
Procedure Recherche_BarreAdresse(hwnd.l, lParam.l)
Tampon.s = Space(50)
GetClassName_(hwnd, @Tampon, 50)
If Tampon = "Edit"
Recherche_BarreAdresse = hwnd
EndIf
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
Et avec mon logiciel donné ci dessous, pouvez vous le lancer sur la barre d'adresse de l'explorateur.
En gros, vous lancez le code, vous mettez la souris au dessus de la barre d'adresse de l'explorateur (la ou on peut écrire, pas la ou il y a des liens genre html pour revenir dans un dossier parent). Vous attendez que la barre de progression soit pleine et vous aller cliquer sur figer puis copier. Ensuite, coller le résultat ici.
Attention, code uniquement pour PB4.20
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 4
;
; 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)
Text.s = Space(255)
GetWindowText_(hwnd, @Text, 255)
If Text
Element + 1 : AddGadgetItem(0, Element, "Text = " + Text, 0, 1)
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