Page 1 sur 1
[R] Gestion de la fonction nouvelle page
Posté : mar. 06 oct. 2015 12:55
par waper
Bonjour à tous,
N'ayant pas trouver mon bonheur sur le forum, d'habitude je m'en sort toujours, j'ai créer le compte pour vous soumettre ma demande.
J'ai fait un petit navigateur, rien de fou j'encapsule juste une page, l'utilisateur ne peux pas la changer, ni naviguer avec ce n'est pas le but.
Sauf que

la page internet affichée est active, et lorsque l'utilisateur vas venir cliquer sur un lien qui normalement ouvre un nouvel onglet cela m'ouvre internet explorer en dehors de mon logiciel et de ce fait les données de session sont perdues.
Voici le code, le site en question à été remplacé par google mais un lien fesant appel à une nouvel fenêtre donnera le même résultat.
Comment gérer l’événement "je clique sur un lien qui ouvre une nouvelle fenêtre" dans la ma GUI et non en dehors

?
► Afficher le texte
Code : Tout sélectionner
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Qbuico.ico
#AutoIt3Wrapper_Res_Comment=
#AutoIt3Wrapper_Res_Description=
#AutoIt3Wrapper_Res_Fileversion=1.0.0.2
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=p
#AutoIt3Wrapper_Res_Language=1036
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#include <IE.au3>
#include <MsgBoxConstants.au3>
If _Singleton("example.exe", 1) = 0 Then
MsgBox(0, "Instance en cours", "Le logiciel est déjà démarré")
Exit
EndIf
$nameGUI = "Example"
Global $oIE, $GUIActiveX, $GUI_Button_Back, $GUI_Button_Forward
Global $GUI_Button_Reload, $GUI_Button_Reboot, $msg
Global $stopwhile = 0
Global $oIE = ObjCreate("Shell.Explorer.2")
GUICreate($nameGUI, (@DesktopWidth - 100), (@DesktopHeight - 100), 0 , 0 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN))
$GUIActiveX = GUICtrlCreateObj ($oIE, 10, 20, (@DesktopWidth - 40) , (@DesktopHeight - 160))
;~ $GUI_Button_Back = GUICtrlCreateButton("Back", 10, 420, 100, 30)
;~ $GUI_Button_Forward = GUICtrlCreateButton("Forward", 120, 420, 100, 30)
$GUI_Button_Reload = GUICtrlCreateButton("Reload", 6, (@DesktopHeight - 136), 100, 30)
;~ $GUI_Button_Reboot = GUICtrlCreateButton("Reboot", 126, 732, 100, 30)
$GUI_Button_Stop = GUICtrlCreateButton("Fermer", (@DesktopWidth - 206), (@DesktopHeight - 136), 100, 30)
GUISetState() ;Show GUI
$oIE.navigate("http://www.google.fr")
$oie.
WinActivate ($nameGUI)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_Button_Reload
$oIE.navigate("http://www.google.fr")
;~ Case $msg = $GUI_Button_Reboot
;~ $oIE.stop
;~ Case $msg = $GUI_Button_Back
;~ $oIE.GoBack
;~ Case $msg = $GUI_Button_Forward
;~ $oIE.GoForward
Case $GUI_Button_Stop
Exit
EndSwitch
WEnd
Merci de votre aide !
Re: Gestion de la fonction nouvelle page
Posté : mar. 06 oct. 2015 14:52
par orax
Bonjour et bienvenue sur le forum, merci de modifier le titre du message afin qu'il respecte les
règles de présentation d'un message.
Re: [..] Gestion de la fonction nouvelle page
Posté : jeu. 08 oct. 2015 19:37
par franco
Salut.
Je viens de tester ton script.
Et chez moi, ça fonctionne.
J'ai donc essayé de changer les paramètres d'IE.
Et j'ai retenté le script : idem
A chaque clic, je suis toujours dans la GUI, j'ai bien la page et IE ne se lance pas.
Faut trouver peut-être des liens qui s'ouvrent dans une fenêtre
++
Re: [..] Gestion de la fonction nouvelle page
Posté : ven. 09 oct. 2015 00:33
par orax
La page de google.fr n'était pas un bon exemple puisque les liens s'ouvrent dans la même fenêtre donc je l'ai changée. Avec ce script il est possible de bloquer toute navigation ($bCancelNav = True). Donc pour tester les deux modes il faut mettre $bCancelNav à True ou False.
Si c'est juste pour empêcher l'ouverture dans une nouvelle fenêtre alors la fonction _IEEvent_BeforeNavigate2 n'est pas nécessaire, elle peut être supprimée.
Doc MSDN =>
https://msdn.microsoft.com/en-us/librar ... 85%29.aspx
► Afficher le texte
Code : Tout sélectionner
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Qbuico.ico
#AutoIt3Wrapper_Res_Comment=
#AutoIt3Wrapper_Res_Description=
#AutoIt3Wrapper_Res_Fileversion=1.0.0.2
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=p
#AutoIt3Wrapper_Res_Language=1036
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#include <IE.au3>
#include <MsgBoxConstants.au3>
If _Singleton("example.exe", 1) = 0 Then
MsgBox(0, "Instance en cours", "Le logiciel est déjà démarré")
Exit
EndIf
$nameGUI = "Example"
Global $oIE, $GUIActiveX, $GUI_Button_Back, $GUI_Button_Forward
Global $GUI_Button_Reload, $GUI_Button_Reboot, $msg
Global $stopwhile = 0
Global $oIE = ObjCreate("Shell.Explorer.2")
Global $oIEEvents = ObjEvent($oIE, "_IEEvent_", "DWebBrowserEvents2")
Global $bCancelNav = False
GUICreate($nameGUI, (@DesktopWidth - 100), (@DesktopHeight - 100), 0, 0, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN))
$GUIActiveX = GUICtrlCreateObj($oIE, 10, 20, (@DesktopWidth - 40), (@DesktopHeight - 160))
;~ $GUI_Button_Back = GUICtrlCreateButton("Back", 10, 420, 100, 30)
;~ $GUI_Button_Forward = GUICtrlCreateButton("Forward", 120, 420, 100, 30)
$GUI_Button_Reload = GUICtrlCreateButton("Reload", 6, (@DesktopHeight - 136), 100, 30)
;~ $GUI_Button_Reboot = GUICtrlCreateButton("Reboot", 126, 732, 100, 30)
$GUI_Button_Stop = GUICtrlCreateButton("Fermer", (@DesktopWidth - 206), (@DesktopHeight - 136), 100, 30)
GUISetState() ;Show GUI
$oIE.navigate("http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_a_target")
While 1
If $oIE.readyState = "complete" Or $oIE.readyState = 3 Or $oIE.readyState = 4 Then ExitLoop
Sleep(10)
WEnd
$bCancelNav = True ; si à True alors on ne peut plus naviguer sur d'autres pages
WinActivate($nameGUI)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_Button_Reload
$oIE.navigate("http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_a_target")
;~ Case $msg = $GUI_Button_Reboot
;~ $oIE.stop
;~ Case $msg = $GUI_Button_Back
;~ $oIE.GoBack
;~ Case $msg = $GUI_Button_Forward
;~ $oIE.GoForward
Case $GUI_Button_Stop
Exit
EndSwitch
WEnd
Volatile Func _IEEvent_NewWindow3($oIEpDisp, ByRef $bIECancel, $iIEFlags, $sIEURLContext, $sIEURL)
$bIECancel = True ; la nouvelle fenêtre ne s'ouvrira pas
If Not $bCancelNav Then $oIE.navigate($sIEURL) ; (facultatif) ouvre le lien dans la fenêtre active, mais je ne sais pas si c'est une bonne façon de faire
EndFunc ;==>_IEEvent_NewWindow3
Volatile Func _IEEvent_BeforeNavigate2($oIEpDisp, $sIEURL, $iIEFlags, $sIETargetFrameName, $sIEPostData, $iIEHeaders, ByRef $bIECancel)
If $bCancelNav Then $bIECancel = True ; $bIECancel = True pour annuler la navigation
EndFunc ;==>_IEEvent_BeforeNavigate2
Re: [..] Gestion de la fonction nouvelle page
Posté : ven. 09 oct. 2015 09:08
par waper
Merci pour vos réponses,
J'ai testé les fonctions, et il s’avère que la page détecte maintenant un blocage des pop-up donc on peux penser que le fenêtres que mes utilisateurs ouvrent sont des pop-up (si cela peux aider à la recherche) et ne se lance donc plus.
C'est ceci : $bIECancel = True qui fait que le module me bloque les pop up
Du coup il faudrait alors autoriser les pop up, mais que ces derniére s'ouvre dans une nouvelle fenêtre de ma GUI, on tourne en rond
Je vais regarder le lien msdn

Toujours à l'écoute pour vos idée sachant que je peux aussi partir sur un autre navigateur si quelqu'un en à codé un.
Re: [..] Gestion de la fonction nouvelle page
Posté : jeu. 15 oct. 2015 16:19
par waper
Salut à tous,
J'ai essayé pas mal de choses sans sucés du coup la demande est toujours ouverte et je suis donc à l'écoute de vos propositions.
Merci de votre aide !
Re: [..] Gestion de la fonction nouvelle page
Posté : jeu. 15 oct. 2015 20:54
par jguinch
Y'a un truc que je comprends pas :
waper a écrit :J'ai fait un petit navigateur, rien de fou j'encapsule juste une page, l'utilisateur ne peux pas la changer, ni naviguer avec ce n'est pas le but.
Donc l'utilisateur peut cliquer ou non ?
Quel est le besoin au final ? Permettre d'avoir un navigateur aux fonctionnalités réduites ?
Re: [..] Gestion de la fonction nouvelle page
Posté : jeu. 15 oct. 2015 21:30
par waper
Oui l'utilisateur peux cliquer pour ouvrir différentes options du site on vas dire comme la saisie d'incident qui apparaissent alors dans une pop-up qui elle doit restée encapsulé et non ouvrir un nouveau navigateur car je perd les donnée de sessions.
Le but final c'est d'encapsuler le site même si les pop up s'ouvre dans une autre fenêtre de mon exe ce n'est pas gênant, les fonctionnalité de navigation doivent être réduire oui

.