Vous déplacer la souris sur la fenêtre ou gadget qui vous intéresse
Vous attendez que la barre soit à 100%
Vous cliquer sur "Figer" pour mémoriser et zou
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, 442, "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)
ProgressBarGadget(2, 0, 422, #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)
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(2, Temps)
EndIf
Else
Temps = 0
SetGadgetState(2, Temps)
Survol_Souris_Memoire = Survol_Souris
EndIf
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
KillTimer_(WindowID(0), 1)
End