Double explorateur sous 7

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

Double explorateur sous 7

Message par Le Soldat Inconnu »

Salut,

je suis en pleine galère pour créer un programme permettant de grouper des explorateur sous 7

Avec mes essais, je viens de trouver un truc rigolo (qlq problème de rafraichissement)
En 50 lignes, j'ai 2 explorateur ouvert sur la même fenêtre :wink:
Rigolo, non ?

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4.50

If OpenWindow(0, 0, 0, 800, 600, "Groupe Exploreur", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget) = 0
	End
EndIf

RunProgram("explorer.exe")
Delay(1000)
id = GetForegroundWindow_()

SetParent_(id, WindowID(0))
; SetWindowLongPtr_(Id2, #GWL_HWNDPARENT, Id) 
Style = GetWindowLongPtr_(id, #GWL_STYLE)
SetWindowLongPtr_(id, #GWL_STYLE, (Style | #WS_CHILDWINDOW) & ~#WS_TILEDWINDOW)
SetWindowPos_(id, 0, 0, 0, WindowWidth(0), WindowHeight(0) / 2, 0)

RunProgram("explorer.exe")
Delay(1000)
id2 = GetForegroundWindow_()

SetParent_(id2, WindowID(0))
; SetWindowLongPtr_(Id2, #GWL_HWNDPARENT, Id) 
Style = GetWindowLongPtr_(id2, #GWL_STYLE)
SetWindowLongPtr_(id2, #GWL_STYLE, (Style | #WS_CHILDWINDOW) & ~#WS_TILEDWINDOW)
SetWindowPos_(id2, 0, 0, WindowHeight(0) / 2, WindowWidth(0), WindowHeight(0) / 2, 0)

Debug hWnd

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, WindowWidth(0), WindowHeight(0) / 2, 0)
			SetWindowPos_(id2, 0, 0, WindowHeight(0) / 2, WindowWidth(0), WindowHeight(0) / 2, 0)
			
	EndSelect
	
Until Event = #PB_Event_CloseWindow
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)]
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Double explorateur sous 7

Message par Ar-S »

Le rafraichissement lors du redimensionnement est à revoir mais c'est excellent ^^
~~~~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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Double explorateur sous 7

Message par Backup »

ça marche aussi sous XP :)

oui c'est vraiment cool :)
boddhi
Messages : 595
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Double explorateur sous 7

Message par boddhi »

Salut !!!

Sous XP SP3 32 bits, ça fonctionne sauf la fermeture de l'appli (en mode débug ou non) qui plante systématiquement explorer.exe
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Double explorateur sous 7

Message par Backup »

boddhi a écrit :Salut !!!

Sous XP SP3 32 bits, ça fonctionne sauf la fermeture de l'appli (en mode débug ou non) qui plante systématiquement explorer.exe
pas chez moi ! XP SP3 32 bits marche nickel sans erreurs a la fin :)
Parole De JOJO
Messages : 446
Inscription : mar. 25/mai/2010 17:24
Localisation : Bnei Brak, Israel

Re: Double explorateur sous 7

Message par Parole De JOJO »

il y a pas un moyen plus simple pour afficher une fenetre externe dans une fenetre (sans l'ouvrire au prealable, comme ici)?
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Double explorateur sous 7

Message par Le Soldat Inconnu »

pas vraiment, plus complexe oui, il faut l'ouvrir avec un runprogram et l'option pour lancer le programme en invisible.
et en même temps, il faut observer les nouvelles fenêtres invisible créées, comparer les programmes à l'origine des nouvelles fenêtres pour savoir si il s'agit bien du programme lancer via RunProgram. Et enfin, si on a trouver la fenêtre correspondant au programme lancé, incorporer la fenêtre.
C'est le principe de mon Bi-Exploreur (voir mon site) et ça donne une belle usine à gaz. Mais de cette manière, on ne voit pas la fenêtre s'ouvrir avant d'être incorporer. Ça fait plus "propre"
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)]
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

Re: Double explorateur sous 7

Message par david »

J'ai plein de fenetres ouvertes sur le PC que j'utilise quotidiennement, et je me disais que cet utilitaire pourrait permettre d'avoir plus de clarté en permettant de travailler sur 2 fenetres de mon choix en même temps.

=> l'idée est d'afficher les fenetres ouvertes pour sélectionner facilement la fenetre1 souhaitée, puis de réafficher la liste pour choisir fenetre2 souhaitée et d'utiliser le superbe code du Soldat Inconnu (que je remercie au passage)

j'ai essayé d'imbriquer les deux mais ça plantouille sévère! (et vu mon niveau difficile d'aller au-delà pour le moment... plus je bidouille, plus ça plantouille). Si qq'un peux apporter une lumière....

Code : Tout sélectionner

Enumeration
  #FEN_0
  #G_TEXT_FEN_A_CAPTURER:#G_COMBO_FEN_A_CAPTURER
  #G_BUTTON_EXECUTER:#G_BUTTON_QUITTER
EndEnumeration

#Fichier=0
cheminapp$=GetCurrentDirectory()

Structure STRU_INFO_GADGET
  win.l
  className$
  ctrl_id$
EndStructure

Global FEN_X.w,FEN_Y.w,FEN_WIDTH.w,FEN_HEIGHT.w, numero_gadget.w, hauteur_barreTitre.w
Global ExternalWindowName$
Global hwnd2.l
Global ma_pos_en_cours.l

Declare .l EnumChildWindowProc(hwnd.l, *cg.STRU_INFO_GADGET)
Declare .l FEN0_INIT()
Declare FEN0_EXEC()

ma_pos_en_cours=0

;#######################################################
;########## PROG PRINCIPAL #############################
;#######################################################

If OpenWindow(0, 0, 0, 800, 600, "Groupe de travail", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget) = 0
   End
 EndIf
 
 
 
 
 
programm_affich_destinations1:
If FEN0_INIT()>0
  ma_pos_en_cours=1:FEN0_EXEC()
EndIf:End

va_selectionner1:
SendMessage_(hwnd2,#WM_SYSCOMMAND, #SC_RESTORE,0)
SendMessage_(hwnd2,#WM_SYSCOMMAND, #SC_MAXIMIZE,0)
Delay(3000);MessageRequester(Str(hwnd2),ExternalWindowName$)
;MessageRequester("","va_selectionner1")

id = GetForegroundWindow_()
SetParent_(id, WindowID(0))
; SetWindowLongPtr_(Id2, #GWL_HWNDPARENT, Id) 
Style = GetWindowLongPtr_(id, #GWL_STYLE)
SetWindowLongPtr_(id, #GWL_STYLE, (Style | #WS_CHILDWINDOW) & ~#WS_TILEDWINDOW)
SetWindowPos_(id, 0, 0, 0, WindowWidth(0), WindowHeight(0) / 2, 0)

Delay(5000)

programm_affich_destinations2:
If FEN0_INIT()>0
  ma_pos_en_cours=2:FEN0_EXEC()
EndIf:End

va_selectionner2:
SendMessage_(hwnd2,#WM_SYSCOMMAND, #SC_RESTORE,0)
SendMessage_(hwnd2,#WM_SYSCOMMAND, #SC_MAXIMIZE,0)
Delay(3000);MessageRequester(Str(hwnd2),ExternalWindowName$)
;MessageRequester("","va_selectionner2")

id2 = GetForegroundWindow_()
SetParent_(id2, WindowID(0))
; SetWindowLongPtr_(Id2, #GWL_HWNDPARENT, Id) 
Style = GetWindowLongPtr_(id2, #GWL_STYLE)
SetWindowLongPtr_(id2, #GWL_STYLE, (Style | #WS_CHILDWINDOW) & ~#WS_TILEDWINDOW)
SetWindowPos_(id2, 0, 0, WindowHeight(0) / 2, WindowWidth(0), WindowHeight(0) / 2, 0)

Delay(5000)
;Debug hWnd

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, WindowWidth(0), WindowHeight(0) / 2, 0)
         SetWindowPos_(id2, 0, 0, WindowHeight(0) / 2, WindowWidth(0), WindowHeight(0) / 2, 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 <> ""
          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:Goto va_selectionner1:EndIf
             If ma_pos_en_cours=2:Goto va_selectionner2: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=5
  #fen_larg = 810 : #fen_haut = 100
  #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,#fen_haut,"Capture Gadget v1.0",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
     TextGadget(#G_TEXT_FEN_A_CAPTURER,col,lig+2,#text_larg,#text_haut,"Choisir la fenêtre : ",#PB_Text_Right)
    ComboBoxGadget(#G_COMBO_FEN_A_CAPTURER,col+#text_larg,lig,#combo_larg,#combo_haut)
    lig+30
    lig+40
     col = #fen_larg-#text_larg/1.5
    ButtonGadget(#G_BUTTON_QUITTER,col,lig,#text_larg/1.5-5,#combo_haut,"Quitter")
    col = GadgetX(#G_BUTTON_QUITTER)- #text_larg/1.5
    ButtonGadget(#G_BUTTON_EXECUTER,col,lig,#text_larg/1.5-5,#combo_haut,"Executer") 
  EndIf

  ProcedureReturn WindowID(#FEN_0)
EndProcedure
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Double explorateur sous 7

Message par graph100 »

@LSI : comme tu utilises un delay(1000), ça peut donner des trucs rigolo si tu cliques sur une autre fenetre au lancement du programme :lol:
PAr exemple en remettant la fenetre de PB au premier plan, on est un peu embété ensuite lors de la fermeture

[edit] : bah c'est pire que ce que je pensais... La fenetre s'est fermée, mais le processus de pb est resté lancé... en mémoire, donc il faut le "kill" :mrgreen:
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

Re: Double explorateur sous 7

Message par david »

Bon c'est plus propre et marche mieux (de temps en temps...ça va et le reste du temps ca ne va pas LOL)
Je met en mémoire les deux numéros de fenetres et apres je lance la fusion (c'est moins berdouilleux!)

Mon problème principal est que l'appel de

Code : Tout sélectionner

SendMessage_(fentre1,#WM_SYSCOMMAND, #SC_RESTORE,0)
ne me remet pas toujours le focus sur le numéro de fenetre en memoire
de temps en temps elle s'affiche mais pas en focus d'ou le .....hum...de....

qq'un a t'il une solution pour prendre un focus de maniere certaine ??

Code : Tout sélectionner

Enumeration
  #FEN_0
  #G_TEXT_FEN_A_CAPTURER:#G_COMBO_FEN_A_CAPTURER
  #G_BUTTON_EXECUTER:#G_BUTTON_QUITTER
EndEnumeration

#Fichier=0
cheminapp$=GetCurrentDirectory()

Structure STRU_INFO_GADGET
  win.l
  className$
  ctrl_id$
EndStructure

Global FEN_X.w,FEN_Y.w,FEN_WIDTH.w,FEN_HEIGHT.w, numero_gadget.w, hauteur_barreTitre.w
Global ExternalWindowName$
Global hwnd2.l:Global fentre1.l:Global fentre2.l
Global ma_pos_en_cours.l


Declare .l EnumChildWindowProc(hwnd.l, *cg.STRU_INFO_GADGET)
Declare .l FEN0_INIT()
Declare FEN0_EXEC()

ma_pos_en_cours=0

;#######################################################
;########## 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("fenetre1 :"+Str(fentre1),"fenetre2 :"+Str(fentre2))
;End
Delay(500)


If OpenWindow(0, 0, 0, 800, 600, "Groupe Exploreur", #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(3000);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, WindowWidth(0), WindowHeight(0) / 2, 0)

;***2
SendMessage_(fentre2,#WM_SYSCOMMAND, #SC_RESTORE,0)
SendMessage_(fentre2,#WM_SYSCOMMAND, #SC_MAXIMIZE,0)
Delay(3000);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, 0, WindowHeight(0) / 2, WindowWidth(0), WindowHeight(0) / 2, 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, WindowWidth(0), WindowHeight(0) / 2, 0)
         SetWindowPos_(id2, 0, 0, WindowHeight(0) / 2, WindowWidth(0), WindowHeight(0) / 2, 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 <> ""
          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=5
  #fen_larg = 810 : #fen_haut = 100
  #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,#fen_haut,"Capture Gadget v1.0",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
     TextGadget(#G_TEXT_FEN_A_CAPTURER,col,lig+2,#text_larg,#text_haut,"Choisir la fenêtre : ",#PB_Text_Right)
    ComboBoxGadget(#G_COMBO_FEN_A_CAPTURER,col+#text_larg,lig,#combo_larg,#combo_haut)
    lig+30
    lig+40
     col = #fen_larg-#text_larg/1.5
    ButtonGadget(#G_BUTTON_QUITTER,col,lig,#text_larg/1.5-5,#combo_haut,"Quitter")
    col = GadgetX(#G_BUTTON_QUITTER)- #text_larg/1.5
    ButtonGadget(#G_BUTTON_EXECUTER,col,lig,#text_larg/1.5-5,#combo_haut,"Executer") 
  EndIf

  ProcedureReturn WindowID(#FEN_0)
EndProcedure
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Double explorateur sous 7

Message par Ar-S »

Pas regardé le code plus que ça mais juste pour l'habitude, tu peux écrire tes global comme suit.

Code : Tout sélectionner

Global.w FEN_X, FEN_Y, etc etc
Global.l hwnd2, fenetre1, fenetre2
J'avoue le

Code : Tout sélectionner

Global hwnd2.l:Global fentre1.l:Global fentre2.l
m'a fait mal aux yeux. :mrgreen:
Même si ça ne change rien.
~~~~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
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

Re: Double explorateur sous 7

Message par david »

j'ai un peu réaménagé compte tenue des conseils

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
#step_haut_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 du haut (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_haut=haut_fenetr_groupe / #step_haut_gr
val1=haut_fenetr_groupe / #step_haut_gr +step_haut*(valeur_ecran-1):val2=haut_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, WindowWidth(0), val1, 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, 0, val1, WindowWidth(0), val2, 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, WindowWidth(0), val1, 0)
         SetWindowPos_(id2, 0, 0, val1 , WindowWidth(0), val2 , 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$="du haut":EndIf
         If ma_pos_en_cours+1=2:texto$="du bas":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
-> par contre si la fenêtre que j'appelle n'a pas été mise en réduction en arrière plan mais est juste en arrière plan avec des autres fenêtres devant ça plante régulièrement??
-> dès fois il n'y a qu'une fenêtre sur les 2 qui répond aux commandes (ex: ouverture de 2 blocs notes, ou fichier 'sophistiqué' genre feuille excel avec macros...
Merci d'avance pour vos aides
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

Re: Double explorateur sous 7

Message par david »

bonjour,
comme j'ai un écran 16/9eme, je voulais fusionner avec une fenetre a droite et une a gauche mais ca plante
j'ai du rater qq chose...

j'ai modifié par :

Code : Tout sélectionner

       SetWindowPos_(id, 0, 0, 0,val1, WindowHeight(0), 0)
         SetWindowPos_(id2, 0, val1, 0, val2, WindowHeight(0), 0)
j'ai une poutre géante devant l'oeil qui m'empêche de voir l'évidence?!
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

Re: Double explorateur sous 7

Message par david »

j'ai enfin trouvé. avec cette modification, j'ai une fenêtre à gauche et une à droite.
merci à tous

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
Mesa
Messages : 1097
Inscription : mer. 14/sept./2011 16:59

Re: Double explorateur sous 7

Message par Mesa »

Problème de Goto avec le compilateur 5.21 b2. Etiquette introuvable.
Peut-être un bug de PB.
(Win Xp 32b)

M.
Répondre