j'ai enfin trouvé. avec cette modification, j'ai une fenêtre à gauche et une à droite.
Code : Tout sélectionner
Enumeration
#FEN_0
#G_TEXT_FEN_A_CAPTURER:#G_COMBO_FEN_A_CAPTURER
#G_BUTTON_EXECUTER:#G_BUTTON_QUITTER
EndEnumeration
#titre ="Sélectionnez la fenêtre à récupérer à l'aide du Menu Déroulant puis cliquez sur Mémoriser"
#Fichier=0
#Fichier=0
#step_gauch_gr =12
#dellay = 1500
cheminapp$=GetCurrentDirectory()
;ma_pos_en_cours=0
ExamineDesktops()
larg_fenetr_groupe= DesktopWidth(0)
haut_fenetr_groupe=DesktopHeight(0)
Structure STRU_INFO_GADGET
win.l
className$
ctrl_id$
EndStructure
Global .w FEN_X, FEN_Y, FEN_WIDTH, FEN_HEIGHT, numero_gadget, hauteur_barreTitre
Global .l hwnd2,fentre1,fentre2, ma_pos_en_cours
Global ExternalWindowName$
Declare .l EnumChildWindowProc(hwnd.l, *cg.STRU_INFO_GADGET)
Declare .l FEN0_INIT()
Declare FEN0_EXEC()
;#######################################################
;########## SELCTIONNER #############################
;#######################################################
programm_affich_destinations1:
If FEN0_INIT()>0
ma_pos_en_cours=1:FEN0_EXEC()
EndIf:End
programm_affich_destinations2:
If FEN0_INIT()>0
ma_pos_en_cours=2:FEN0_EXEC()
EndIf:End
;#######################################################
;##############################VA FUSIONNER#########################
;#######################################################
va_fusionner_les_fenetres:
;MessageRequester("Mise en mémoire des fenêtres","fenetre1 :"+Str(fentre1)+Chr(10)+"fenetre2 :"+Str(fentre2))
taille_ecr$ =InputRequester("Dimensionnement des fenêtres","Taille de l'écran de gauche (en taille de 1 à 11) :","6")
valeur_ecran=Val(taille_ecr$)
If valeur_ecran<1 Or valeur_ecran>11:Goto va_fusionner_les_fenetres:EndIf
step_gauch=larg_fenetr_groupe / #step_gauch_gr
val1=larg_fenetr_groupe / #step_gauch_gr +step_gauch*(valeur_ecran-1):val2=larg_fenetr_groupe -val1
Delay(500)
If OpenWindow(0, 0, 0, larg_fenetr_groupe, haut_fenetr_groupe, "Groupe de travail", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget) = 0
End
EndIf
;***1
SendMessage_(fentre1,#WM_SYSCOMMAND, #SC_RESTORE,0)
SendMessage_(fentre1,#WM_SYSCOMMAND, #SC_MAXIMIZE,0)
Delay(#dellay);MessageRequester(Str(hwnd2),ExternalWindowName$)
id = GetForegroundWindow_()
SetParent_(id, WindowID(0))
Style = GetWindowLongPtr_(id, #GWL_STYLE)
SetWindowLongPtr_(id, #GWL_STYLE, (Style | #WS_CHILDWINDOW) & ~#WS_TILEDWINDOW)
SetWindowPos_(id, 0, 0, 0,val1, WindowHeight(0), 0)
;***2
SendMessage_(fentre2,#WM_SYSCOMMAND, #SC_RESTORE,0)
SendMessage_(fentre2,#WM_SYSCOMMAND, #SC_MAXIMIZE,0)
Delay(#dellay);MessageRequester(Str(hwnd2),ExternalWindowName$)
id2 = GetForegroundWindow_()
SetParent_(id2, WindowID(0))
Style = GetWindowLongPtr_(id2, #GWL_STYLE)
SetWindowLongPtr_(id2, #GWL_STYLE, (Style | #WS_CHILDWINDOW) & ~#WS_TILEDWINDOW)
SetWindowPos_(id2, 0, val1, 0, val2, WindowHeight(0), 0)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Menu
Select EventMenu() ; Menus
EndSelect
Case #PB_Event_Gadget
Select EventGadget() ; Gadgets
EndSelect
Case #PB_Event_SizeWindow
SetWindowPos_(id, 0, 0, 0,val1, WindowHeight(0), 0)
SetWindowPos_(id2, 0, val1, 0, val2, WindowHeight(0), 0)
EndSelect
Until Event = #PB_Event_CloseWindow
;#######################################################
;########## PROCEDURES #############################
;#######################################################
Procedure FEN0_EXEC()
Protected event.l, evgad.l , quit.b = 0, nom_fichier.s = ""
Protected hwnd.l, chaine.s = Space(256)
;{ auteur : dlolo
;; purebasic forum french : http://www.purebasic.fr/french/viewtopic.php?t=3622&start=0&postdays=0&postorder=asc&highlight=list+process
hWnd = FindWindow_( 0, 0 )
While hWnd <> 0
If GetWindowLong_(hWnd, #GWL_STYLE) & #WS_VISIBLE = #WS_VISIBLE
If GetWindowLong_(hWnd, #GWL_EXSTYLE) & #WS_EX_TOOLWINDOW <> #WS_EX_TOOLWINDOW
GetWindowText_(hWnd,@chaine,256)
If chaine <> "" And chaine <> #titre
AddGadgetItem(#G_COMBO_FEN_A_CAPTURER,-1,chaine) ;Str(hwnd) = n°
EndIf
EndIf
EndIf
hWnd = GetWindow_(hWnd, #GW_HWNDNEXT)
Wend
;} fin
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_Gadget
evgad = EventGadget()
Select evgad
Case #G_COMBO_FEN_A_CAPTURER
Case #G_BUTTON_EXECUTER
ExternalWindowName$= GetGadgetText(#G_COMBO_FEN_A_CAPTURER) ;recupere le nom en cours
hwnd2 = FindWindow_(0,ExternalWindowName$) ;va chercher son ID
If hwnd2=0
MessageRequester(Str(hwnd2),ExternalWindowName$+ " introubable")
Else
If ma_pos_en_cours=1:fentre1=hwnd2:Goto programm_affich_destinations2:EndIf
If ma_pos_en_cours=2:fentre2=hwnd2:Goto va_fusionner_les_fenetres:EndIf
End
EndIf
End
Case #G_BUTTON_QUITTER
quit = 2
EndSelect
Case #PB_Event_CloseWindow
quit = 1
EndSelect
Until quit>0
EndProcedure
Procedure.l EnumChildWindowProc(hwnd.l, *cg.STRU_INFO_GADGET)
Protected classe$, chaine$, rc.RECT, style.l
Protected GDT_X.w,GDT_Y.w,GDT_WIDTH.w,GDT_HEIGHT.w
Protected chaine_sortie.s,chaine_coords.s,ctrlid$
If GetParent_(hWnd) = *cg\win
classe$=Space(100)
chaine$=Space(255)
GetClassName_(hwnd, @classe$, 100)
GetWindowText_(hwnd,@chaine$,255)
GetWindowRect_(hwnd,@rc)
style=GetWindowLong_(hwnd,#GWL_EXSTYLE)
ctrlid$=Str(GetWindowLong_(hwnd,#GWL_ID))
GDT_X = rc\left-FEN_X-2*GetSystemMetrics_(#SM_CYBORDER) : GDT_Y = rc\top-FEN_Y-hauteur_barreTitre : GDT_WIDTH = rc\right-rc\left : GDT_HEIGHT = rc\bottom-rc\top
chaine_coords = Str(GDT_X)+","+Str(GDT_Y)+","+Str(GDT_WIDTH)+","+Str(GDT_HEIGHT)
Debug classe$
If classe$ = "ComboBox"
classe$ = "ComboBoxGadget"
chaine_sortie = classe$+"("+Str(numero_gadget)+","+chaine_coords+")"
;;,"+ Chr(34) +chaine$+ Chr(34)
EndIf
If classe$ = "Static"
classe$ = "textgadget"
chaine_sortie = classe$+"("+Str(numero_gadget)+","+chaine_coords+","+ Chr(34) +chaine$+ Chr(34) +")"
EndIf
If classe$ = "Edit"
classe$ = "stringgadget"
chaine_sortie = classe$+"("+Str(numero_gadget)+","+chaine_coords+","+ Chr(34) +chaine$+ Chr(34) +")"
EndIf
If classe$ = "Button"
classe$ = "buttongadget"
chaine_sortie = classe$+"("+Str(numero_gadget)+","+chaine_coords+","+ Chr(34) +chaine$+ Chr(34) +")"
EndIf
chaine_sortie+" ; CTRL_ID="+ctrlid$
WriteStringN(#Fichier, chaine_sortie)
numero_gadget+1
EndIf
ProcedureReturn 1
EndProcedure
Procedure.l FEN0_INIT()
Protected col.w=5, lig.w=50
#fen_larg = 810 : #fen_haut = 180
#text_larg = #fen_larg/3-10 : #text_haut = 16
#combo_larg = #fen_larg-#text_larg-10 : #combo_haut = 20
If OpenWindow(#FEN_0,0,0,#fen_larg-130,#fen_haut,#titre,#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
If ma_pos_en_cours+1=1:texto$="de gauche":EndIf
If ma_pos_en_cours+1=2:texto$="de droite":EndIf
TextGadget(#G_TEXT_FEN_A_CAPTURER,col-130,lig+2,#text_larg+10,#text_haut,"Nom de la fenêtre "+texto$+ " : ",#PB_Text_Right)
ComboBoxGadget(#G_COMBO_FEN_A_CAPTURER,col-80+#text_larg-40,lig,#combo_larg-20,#combo_haut)
lig+30
lig+40
col = #fen_larg-#text_larg/1.5
ButtonGadget(#G_BUTTON_QUITTER,col-150,lig,#text_larg/1.5-5,#combo_haut+20,"Quitter")
col = GadgetX(#G_BUTTON_QUITTER)- #text_larg/1.5
ButtonGadget(#G_BUTTON_EXECUTER,col,lig,#text_larg/1.5-5,#combo_haut+20,"Mémoriser")
EndIf
ProcedureReturn WindowID(#FEN_0)
EndProcedure