Bonjour,
Ça fait plaisir de voir que l’on se penche sur mon problème pendant que je vaque à d’autres occupations !
Michel a raison, le $h += 100 était uniquement pour visualiser (éviter les superpositions) et la position de la gui fille n’a pas d’importance. Ce qui importe, c’est d’éviter un doublon.
L’idée de créer une gui fille dès le début est problématique à l’intérieur de mon programme et demande à effacer toutes les options, édit et autres, ce qui complique la chose. Détruire la gui et la recréer est plus simple dans mon cas.
Pour faire rapide (j’aurais peut-être dû commencer par-là), mon programme liste les fichiers d’un dossier dans une ListView (LV). Dans la LV, je note des commentaires et autres infos. Par le bouton « enregistrer », s’ouvre une gui avec différentes options et c’est là que vient mon problème. Ma souris fait parfois des doubles clics et je me retrouve avec 2 guis et plein de problèmes !
Il y a la solution de Michel ($GUI_DISABLE) ou les 2 solutions en début de mon post mais qui demandent 2 interventions (($GUI_DISABLE, $GUI_ENABLE par exemple) d’où l’idée de repérer la gui et éviter un doublon lors de sa création. Après avoir épluché l’aide, j’ai trouvé _WinAPI_IsWindow ( $hWnd ) et ça m’a fait « tilt » dans ma tête. Si la gui est créée, elle a un handle d’où 2 solutions IsHWnd( $Form2) ou WinExists( $Form2) et dans Func Button1Click() simplement If IsHWnd( $Form2) Then Return 0 et là, pas de doublon
#include <GUIConstantsEx.au3>#include <WindowsConstants.au3>Opt("GUIOnEventMode", 1)Global $h = 350, $Form2 = 0Global $Form1 = GUICreate("Form1", 395, 213, -1, 124)GUISetOnEvent($GUI_EVENT_CLOSE, "sortie")Global $Button1 = GUICtrlCreateButton("Create", 48, 144, 97, 41)GUICtrlSetOnEvent(-1, "Button1Click")GUISetState(@SW_SHOW)While 1 Sleep(100)WEndFunc sortie
() ExitEndFuncFunc Button1Click
() ;If WinExists( $Form2) Then Return 0 ;autre solution If IsHWnd( $Form2) Then Return 0 $Form2 = GUICreate("Form", 213, 213, -1, $h, -1, $WS_EX_TOPMOST,$Form1) GUISetOnEvent($GUI_EVENT_CLOSE, "sortieFille") GUICtrlCreateButton("Del", 48, 144, 97, 41) GUICtrlSetOnEvent(-1, "sortieFille") GUISetState(@SW_SHOW) $h += 100EndFuncFunc sortieFille
() GUIDelete($Form2)EndFunc
Je crois que la chaleur me ramollit les neurones

En tout cas merci de vous êtes penché sur mon problème et pardon d'avoir tardé à répondre.