Salutations,
Apres avoir eu besoin d'un mini navigateur intégré pour mon appli, j'ai décidé de regrouper les fonctions utiles pour la navigation.
Ce que permet de faire cet UDF :
- Empêcher l'utilisateur de faire des .GoBack et .GoForward si il n'y a pas de page dispo
- Notifier dans un contrôle la barre d'adresse courante
- Notifier dans un contrôle la StatusBar (car les embedded ne suportent pas la récup du StatusText)
- Notifier dans un controle la progressBar
L'utilisation de l'udf est simple car il est peu puissant. En effet, il ne gere qu'un seul object IE a la foi.
Pour attacher les fonctions a un objet, commencez par un IEN_Init($oIE)
par la suite, placez dans les variable global déclarées en tête du script les handle de vos control, le script se chargera de les mettre a jour
(IEN_Adress, $IEN_Status, $IEN_Progress)
Enfin, utilisez les fonction JMD_IEprec() et JMD_IEsuiv() pour naviguer de page précédente a suivante.
l'udf :
► Afficher le texte
Code : Tout sélectionner
#include <IE.au3>
Global Const $CSC_UPDATECOMMANDS = 0xFFFFFFFF
Global Const $CSC_NAVIGATEFORWARD = 0x00000001
Global Const $CSC_NAVIGATEBACK = 0x00000002
Global $IEN_oIE
Global $IEN_allowBack, $IEN_allowForward
Global $IEN_Adress, $IEN_Status, $IEN_Progress
Func IEN_Init($oIE)
ObjEvent($oIE, "IENEvent_", "DWebBrowserEvents2")
$IEN_oIE = $oIE
EndFunc
Func JMD_IEprec()
If Not $IEN_allowBack Then Return
_IEAction($IEN_oIE,"back")
EndFunc
Func JMD_IEsuiv()
If Not $IEN_allowForward Then Return
_IEAction($IEN_oIE,"forward")
EndFunc
Func IENEvent_CommandStateChange($command, $enable)
Switch $command
Case $CSC_NAVIGATEFORWARD
If $enable = True Then
$IEN_allowForward = True
Else
$IEN_allowForward = False
EndIf
Case $CSC_NAVIGATEBACK
If $enable = True Then
$IEN_allowBack = True
Else
$IEN_allowBack = False
EndIf
EndSwitch
EndFunc
Func IENEvent_NavigateComplete2($oWebBrowser,$URL)
GUICtrlSetData($IEN_Adress,$url)
EndFunc
Func IENEvent_StatusTextChange($sB)
If $sB <> "" Then GUICtrlSetData($IEN_Status,$sB)
EndFunc
Func IENEvent_ProgressChange($PROGRESS, $PROGRESS_MAX)
If $PROGRESS_MAX > 0 Then
GUICtrlSetData($IEN_Progress, ($PROGRESS * 100) / $PROGRESS_MAX)
Else
GUICtrlSetData($IEN_Progress,0)
EndIf
EndFunc
un exemple rapide
► Afficher le texte
Code : Tout sélectionner
; *******************************************************
; Example 1 - Trap COM errors so that 'Back' and 'Forward'
; outside of history bounds does not abort script
; (expect COM errors to be sent to the console)
; *******************************************************
;
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#include "IENavigate.au3"
_IEErrorHandlerRegister ()
$oIE = _IECreateEmbedded ()
IEN_Init($oIE)
GUICreate("Embedded Web control Test", 640, 580, _
(@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, _
$WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
$GUIActiveX = GUICtrlCreateObj($oIE, 10, 40, 600, 360)
$GUI_Button_Back = GUICtrlCreateButton("Back", 10, 420, 100, 30)
$GUI_Button_Forward = GUICtrlCreateButton("Forward", 120, 420, 100, 30)
$GUI_Button_Home = GUICtrlCreateButton("Home", 230, 420, 100, 30)
$GUI_Button_Stop = GUICtrlCreateButton("Stop", 340, 420, 100, 30)
GUISetState() ;Show GUI
$IEN_Adress = GUICtrlCreateLabel('',0,450,500,20)
_IENavigate ($oIE, "http://www.autoitscript.com")
; Waiting for user to close the window
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $GUI_Button_Home
_IENavigate ($oIE, "http://www.autoitscript.com")
Case $msg = $GUI_Button_Back
JMD_IEprec()
Case $msg = $GUI_Button_Forward
JMD_IEsuiv()
Case $msg = $GUI_Button_Stop
_IEAction ($oIE, "stop")
EndSelect
WEnd
GUIDelete()
Exit
Encore une foi, l'udf n'est vraiment pas puissant est peu intéressant dans l'état. Je vous recommande donc chaudement de le lire affin d'appliquer les fonctions s'y trouvant au mieux dans vos script !
Pour allez plus loin :
http://msdn.microsoft.com/en-us/library/aa752084.aspx