Bonjour !
Pour reproduire le problème (avec l'exemple 1) :
– Dans la fenêtre "1", j'écris quelque chose dans la zone de recherche de Google.
– Ensuite dans la fenêtre "2", j'essaie de supprimer ce qu'il y a écrit dans l'Edit (les "222222...") mais ça supprime ce qu'il y a dans la zone de recherche de Google malgré que la fenêtre "1" ne soit plus active.
Par contre si j'ajoute du texte dans l'Edit ça marche. Ce qui pose problème ce sont, au moins, les touches gauche/droite/retour arrière/suppr/entrée/origine/fin/page préc./page suiv.
► Afficher le texteexemple 1
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <IE.au3>
#include <WindowsConstants.au3>
; Sans ça le presse-papier ne marche pas correctement.
DllCall("ole32.dll", "long", "OleInitialize", "ptr", 0)
Local $oIE = _IECreateEmbedded()
GUICreate("1", 1240, 580, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN))
GUICtrlCreateObj($oIE, 100, 100, 1100, 360)
GUICtrlCreateEdit('11111111111111111111111', 0, 0, 800, 100)
GUISetState()
_IENavigate($oIE, "http://www.google.com")
;~ $oIE2 = _IECreateEmbedded()
GUICreate("2", 1240, 580, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN))
;~ GUICtrlCreateObj($oIE2, 100, 100, 1100, 360)
GUICtrlCreateEdit('2222222222222222222222', 0, 0, 800, 100)
GUISetState()
;~ _IENavigate($oIE2, "http://www.autoitscript.com")
While 1
Local $iMsg = GUIGetMsg()
Select
Case $iMsg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
WEnd
GUIDelete()
Un autre exemple où le problème se produit. Avec une seule fenêtre.
► Afficher le texteexemple 2
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <IE.au3>
#include <WindowsConstants.au3>
; Sans ça le presse-papier ne marche pas correctement.
DllCall("ole32.dll", "long", "OleInitialize", "ptr", 0)
Local $oIE = _IECreateEmbedded()
GUICreate("1", 1100, 550, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN))
;~ GUICreate("1", 1100, 550, -1, -1)
GUICtrlCreateObj($oIE, 0, 100, 500, 360)
GUICtrlCreateEdit('11111111111111111111111', 0, 0, 500, 100)
GUISetState()
_IENavigate($oIE, "http://www.google.com")
$oIE2 = _IECreateEmbedded()
GUICtrlCreateObj($oIE2, 550, 100, 500, 360)
GUICtrlCreateEdit('2222222222222222222222', 550, 0, 500, 100)
_IENavigate($oIE2, "http://www.google.com")
While 1
Local $iMsg = GUIGetMsg()
Select
Case $iMsg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
WEnd
GUIDelete()
Édité : j'ai trouvé une fonction (et ses dérivées) qui corrige le problème : _IECreatePseudoEmbedded. Mais ce n'est qu'une demi-solution, à première vue c'est plus lourd que _IECreateEmbedded, et si le script plante on se retrouve avec des "iexplore.exe" invisibles qui ne seront pas fermés automatiquement. Bref… je vais tester tout ça et s'il n'y a pas d'autres solutions, plus propres, je ferai avec ou je n'utiliserai qu'un seul IE dans la GUI.
Le problème ne date pas d'hier (2008)
problems-with-iecreateembedded-copypaste