#include #include #include #include #include #include #include #cs ---------------------------------------------------------------------------- Script Name : iSafari 4.0.0.0 Author : DJSIR Script Function : Script principal d'iSafari, contient le naviguateur et les fonctions principales. #ce ---------------------------------------------------------------------------- #AutoIt3Wrapper_Icon=res\iSafari.ico #AutoIt3Wrapper_Outfile=iSafari 4.0.exe #AutoIt3Wrapper_UseUpx=n #AutoIt3Wrapper_Res_Comment=by DJSIR and The French AutoIt Team #AutoIt3Wrapper_Res_Description=DJSIR, Inc #AutoIt3Wrapper_Res_Fileversion=4.0.0.0 #AutoIt3Wrapper_Res_LegalCopyright=Creative Commons 2.0 FR (by-nc-sa) #AutoIt3Wrapper_Res_Language=1033 Opt("GUIOnEventMode", 1) #RequireAdmin #NoTrayIcon $INI_SKIN = IniRead(@ScriptDir & "\database\configuration.ini", "CFG", "SKIN", "Kempelton") $INI_HOME = IniRead(@ScriptDir & "\database\configuration.ini", "CFG", "HOME", "http://www.google.fr/") $THEME = @ScriptDir & "\database\skins\" & $INI_SKIN & ".dll" $GUI = GUICreate("iSafari", 800, 645, -1, -1, $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX + $WS_SIZEBOX) GUISetBkColor(0xFFFFFF) Global $SITE, $TempArray ;#Header Dim $Button[11] Dim $Group[11] For $i = 1 To 10 $Button[$i] = GUICtrlCreatePic("", 0, 0, 0, 0) Next _IEErrorHandlerRegister () $nombre_tabs = 1 $FILE = GUICtrlCreateMenu("&Fichier") $HISTORY = GUICtrlCreateMenu("&Historique") $BOOKMARKS = GUICtrlCreateMenu("&Marque-pages") $TOOLS = GUICtrlCreateMenu("&Outils") $HELP = GUICtrlCreateMenu("&?") $Group[1] = GUICtrlCreateGroup("", 5, 0, 30, 35) SetBitmapResourceToPicCtrl($GUI, $Button[1], 8, 8, 24, 24, $THEME, "101_BMP", "str") GUICtrlSetCursor($Button[1], 0) GUICtrlSetTip($Button[1], "Reculer d'une Page") GUICtrlSetOnEvent($Button[1], "_BACK") $Group[2] = GUICtrlCreateGroup("", 40, 0, 30, 35) SetBitmapResourceToPicCtrl($GUI, $Button[2], 43, 8, 24, 24, $THEME, "102_BMP", "str") GUICtrlSetCursor($Button[2], 0) GUICtrlSetTip($Button[2], "Avancer d'une Page") GUICtrlSetOnEvent($Button[2], "_NEXT") $Group[3] = GUICtrlCreateGroup("", 75, 0, 30, 35) SetBitmapResourceToPicCtrl($GUI, $Button[3], 78, 8, 24, 24, $THEME, "103_BMP", "str") GUICtrlSetCursor($Button[3], 0) GUICtrlSetTip($Button[3], "Arrêter le Chargement de la Page") GUICtrlSetOnEvent($Button[3], "_STOP") $Group[4] = GUICtrlCreateGroup("", 110, 0, 30, 35) SetBitmapResourceToPicCtrl($GUI, $Button[4], 113, 8, 24, 24, $THEME, "104_BMP", "str") GUICtrlSetCursor($Button[4], 0) GUICtrlSetTip($Button[4], "Actualiser la Page Courante") GUICtrlSetOnEvent($Button[4], "_REFRESH") $Group[5] = GUICtrlCreateGroup("", 145, 0, 30, 35) SetBitmapResourceToPicCtrl($GUI, $Button[5], 148, 8, 24, 24, $THEME, "105_BMP", "str") GUICtrlSetCursor($Button[5], 0) GUICtrlSetTip($Button[5], "Retourner sur la Page d'Accueil") $Group[6] = GUICtrlCreateGroup("", 180, 0, 30, 35) SetBitmapResourceToPicCtrl($GUI, $Button[6], 183, 8, 24, 24, $THEME, "106_BMP", "str") GUICtrlSetCursor($Button[6], 0) GUICtrlSetTip($Button[6], "Afficher les Pages Marqués") $Group[7] = GUICtrlCreateGroup("", 215, 0, 30, 35) SetBitmapResourceToPicCtrl($GUI, $Button[7], 218, 8, 24, 24, $THEME, "107_BMP", "str") GUICtrlSetCursor($Button[7], 0) GUICtrlSetTip($Button[7], "Afficher l'Historique") $Group[8] = GUICtrlCreateGroup("", 250, 0, 30, 35) SetBitmapResourceToPicCtrl($GUI, $Button[8], 253, 8, 24, 24, $THEME, "108_BMP", "str") GUICtrlSetCursor($Button[8], 0) GUICtrlSetTip($Button[8], "Imprimer la Page Courante") $Group[9] = GUICtrlCreateGroup("", 285, 0, 30, 35) SetBitmapResourceToPicCtrl($GUI, $Button[9], 288, 8, 24, 24, $THEME, "109_BMP", "str") GUICtrlSetCursor($Button[9], 0) GUICtrlSetTip($Button[9], "Nouvelle Fenêtre") $Adresse = GUICtrlCreateInput("http://www.google.fr/", 321, 8, 439, 24) GUICtrlSetFont(-1, 10, -1, -1, "Tahoma") $Group[10] = GUICtrlCreateGroup("", 765, 0, 30, 35) SetBitmapResourceToPicCtrl($GUI, $Button[10], 768, 8, 24, 24, $THEME, "102_BMP", "str") GUICtrlSetCursor($Button[10], 0) GUICtrlSetTip($Button[10], "Valider l'Adresse") GUICtrlSetOnEvent($Button[10], "_LOAD") ;#EndHeader ;#Footer $GroupFinal = GUICtrlCreateGroup("", 5, 566, 790, 30) $Statut = GUICtrlCreateLabel($INI_HOME, 10, 576, 550, 15) $ProgressPage = GUICtrlCreateProgress(640, 576, 150, 15) ;#EndFooter $hTab = GUICtrlCreateTab(5, 40, 790, 528) $moins = GUICtrlCreateButton("Fermer l'onglet", 696, 35, 100, 20) $nombre_tabs_reeel=$nombre_tabs Global $IE_EN_COURS ; global pour connaître l'IE en cours $posx_ie=0 $posy_ie =60 $width_ie = 799 $height_ie = 510 For $i = 1 To $nombre_tabs $indlocal = $i Assign("onglet" & $i, GUICtrlCreateTabItem("Onglet " & $i), 2) Assign("objIE" & $i, ObjCreate("Shell.Explorer.2"), 2) ObjEvent(Eval("objIE" & $i), "IEEvent_", "DWebBrowserEvents") $temp = Eval("objIE" & $i) If $indlocal = 1 Then $IE_EN_COURS = $temp ; init de l'IE en cours lors de la création Assign("h_obj" & $i, GUICtrlCreateObj($temp, $posx_ie, $posy_ie, $width_ie, $height_ie), 2) $CTRL_EN_COURS = Eval("h_obj" & $i) GUICtrlSetResizing($CTRL_EN_COURS,$GUI_DOCKAUTO) $temp.navigate("http://google.ca") Next $plus = GUICtrlCreateTabItem("+") ;Informations sur le Redimentionnement GUICtrlSetResizing($Adresse, $GUI_DOCKRIGHT + $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT) GUICtrlSetResizing($Button[10], $GUI_DOCKRIGHT + $GUI_DOCKSIZE + $GUI_DOCKTOP) GUICtrlSetResizing($Group[10], $GUI_DOCKRIGHT + $GUI_DOCKSIZE + $GUI_DOCKTOP) GUICtrlSetResizing($Statut, $GUI_DOCKLEFT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT) GUICtrlSetResizing($GroupFinal, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKLEFT + $GUI_DOCKHEIGHT) GUICtrlSetResizing($ProgressPage, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT) For $i = 1 To 9 GUICtrlSetResizing($Button[$i], $GUI_DOCKALL) GUICtrlSetResizing($Group[$i], $GUI_DOCKALL) Next GUISetOnEvent($GUI_EVENT_CLOSE, "_EXIT") GUISetState(@SW_SHOW) _Start() guictrlsetonevent($GUI_EVENT_MAXIMIZE, "resize") guictrlsetonevent($GUI_EVENT_RESIZED, "resize") guictrlsetonevent($GUI_EVENT_RESTORE, "resize") GuictrlsetonEvent($moins, "ON_MOINS") GuictrlsetonEvent($hTab, "h_tabb") While 1 Sleep(50) resize() WEnd #Region Fonctions #Region Basiques Func _RUN() If @Compiled Then Run(@ScriptDir & "\iSafari.exe", @ScriptDir) EndFunc ;==>_RUN Func _START() _IENavigate($IE_EN_COURS, $INI_HOME) EndFunc ;==>_START Func _LOAD() _IENavigate($IE_EN_COURS, GUICtrlRead($Adresse), 0) EndFunc ;==>_LOAD Func _BACK() _IEAction($IE_EN_COURS, "back") EndFunc ;==>_BACK Func _NEXT() _IEAction($IE_EN_COURS, "forward") EndFunc ;==>_NEXT Func _STOP() _IEAction($IE_EN_COURS, "stop") EndFunc ;==>_STOP Func _REFRESH() _IEAction($IE_EN_COURS, "refresh") EndFunc ;==>_REFRESH Func _EXIT() Exit EndFunc ;==>_EXIT Func _ND() MsgBox(16, "iSafari", "Cette fonction n'est pas disponible.") EndFunc ;==>_ND Func About() MsgBox(32, "iSafari","iSafari 4.0.0.0" & @CRLF & "by DJSIR and The French AutoIt Team" & @CRLF & @CRLF & "Creative Commons 2.0 Fr (by-nc-sa)") EndFunc Func ON_MOINS() If $nombre_tabs_reeel <= 0 Then Return 0 $tab_select = GUICtrlRead($hTab, 1) If $tab_select = $plus Then Return 0 ;detection et destruction de l'objet IE for $ind = 1 To $nombre_tabs If Eval("onglet"&$ind) = $tab_select Then $temp = Eval("objIE" & $ind) If IsObj($temp) Then _IEQuit($temp) Assign("objIE" & $ind,-1) ExitLoop EndIf Next GUICtrlDelete($tab_select) ;le contrôle étant libérer, son ancienne valeur d'adresse est dispo pour une prochaine création de contrôle ;ceci nous arrange pas du tout si on veut continuer à créer nos tab en croissance. ;donc on le reprends avec un dummy controle GUICtrlCreateDummy() ;mise à jour de 'l'obj IE devenu l'objet courrant ;on suppose d'abords qu'ojn ai des tab de navigation à droite $found = 0 For $ind2 = $ind+1 To $nombre_tabs If Eval("objIE"&$ind2) <> -1 Then $IE_EN_COURS = Eval("objIE" & $ind2) $CTRL_EN_COURS=Eval("h_obj" & $ind2) $found = 1 ConsoleWrite($ind2 & @CRLF) ;GUICtrlSetState(Eval("h_obj" & $ind2), $GUI_SHOW) ExitLoop EndIf Next ;maintenant il faut vérifier si on en a vraiment trouvé If Not $found Then ; on est dans le cas où l'onglet fermer précédait directement l'onglet + : marche arrière For $ind2 = $ind-1 To 1 step -1 If Eval("objIE"&$ind2) <> -1 Then GUICtrlSetState(Eval("onglet"&$ind2),$GUI_SHOW) $IE_EN_COURS = Eval("objIE" & $ind2) $CTRL_EN_COURS=Eval("h_obj" & $ind2) ConsoleWrite($ind2 & @CRLF) ExitLoop EndIf Next EndIf $nombre_tabs_reeel-=1 If $nombre_tabs_reeel <= 1 Then GUICtrlSetState($moins,$GUI_DISABLE) EndFunc Func h_TABB() ConsoleWrite("tab"&@CRLF) $tab_clicked = GUICtrlRead($hTab, 1) If $tab_clicked = $plus Then GUICtrlDelete($plus) ;GUISwitch($GUI,Eval("hItem"&$nombre_tabs-2)) $nombre_tabs += 1 $nombre_tabs_reeel+=1 Assign("onglet" & $nombre_tabs, GUICtrlCreateTabItem("Onglet " & $nombre_tabs), 2) GUICtrlSetData($plus,"Onglet " & $nombre_tabs) Assign("objIE" & $nombre_tabs, ObjCreate("Shell.Explorer.2"), 2) $temp = Eval("objIE" & $nombre_tabs) $IE_EN_COURS = $temp ObjEvent($temp, "IEEvent_", "DWebBrowserEvents") Assign("h_obj" & $nombre_tabs, GUICtrlCreateObj($temp, $posx_ie, $posy_ie, $width_ie, $height_ie), 2) GUICtrlSetResizing(Eval("h_obj" & $nombre_tabs),$GUI_DOCKAUTO) $CTRL_EN_COURS = Eval("h_obj" & $i) GUICtrlSetResizing($CTRL_EN_COURS,$GUI_DOCKAUTO) GUICtrlSetState(Eval("onglet"&$nombre_tabs), $GUI_SHOW) GUISetState(@SW_SHOW, $GUI) $temp.navigate("http://google.ca") GUICtrlSetState($moins,$GUI_ENABLE) ;nouvel onglet "+" $plus = GUICtrlCreateTabItem("+") Assign("onglet" & $nombre_tabs+1,$plus) Else ;on a changé de tab, il faut retrouvé l'IE en cours For $ind = 1 To $nombre_tabs If Eval("onglet"&$ind) = $tab_clicked Then $IE_EN_COURS = Eval("objIE" & $ind) ConsoleWrite($ind & @CRLF) GUICtrlSetState(Eval("h_obj" & $ind), $GUI_SHOW) ExitLoop EndIf Next EndIf endfunc func resize() ;le resize a déjà été fait lorsqu'on arrive ici grâce à l'attribu $GUI_DOCKAUTO ;maintenant on met à jour les dimension de création des duturs tab en se calant sur les dimensions actuelles ;du contrôle courrant $newpos=ControlGetPos("","",ControlGetHandle("","",$CTRL_EN_COURS)) ConsoleWrite("test_size "&@error&@CRLF) If IsArray($newpos) Then $posx_ie=$newpos[0] $posy_ie =$newpos[1] $width_ie = $newpos[2] $height_ie = $newpos[3] EndIf endfunc #EndRegion Basiques #Region Events et Autres Func SetBitmapResourceToPicCtrl($hwnd, $ctrl, $posw, $posh, $picw, $pich, $FILE, $resource, $type = "int") Local Const $STM_SETIMAGE = 0x0172 Local Const $IMAGE_BITMAP = 0 Local Const $LR_CREATEDIBSECTION = 0x2000 Local Const $LR_COPYDELETEORG = 8 $hwnd = ControlGetHandle($hwnd, "", $ctrl) Local $DLLinst = DllCall("kernel32.dll", "hwnd", "LoadLibrary", $type, $FILE) $DLLinst = $DLLinst[0] Local $hBitmap = DllCall("user32.dll", "hwnd", "LoadImage", "hwnd", $DLLinst, "str", $resource, _ "int", $IMAGE_BITMAP, "int", 0, "int", 0, "int", 0) $hBitmap = $hBitmap[0] DeleteObject(_SendMessage($hwnd, $STM_SETIMAGE, $IMAGE_BITMAP, $hBitmap, 0, "int", "int", "hwnd")) DllCall("kernel32.dll", "int", "FreeLibrary", "hwnd", $DLLinst) GUICtrlSetPos($ctrl, $posw, $posh, $picw, $pich) EndFunc ;==>SetBitmapResourceToPicCtrl Func DeleteObject($hObj) Local $bResult = DllCall('gdi32.dll', 'int', 'DeleteObject', _ 'hwnd', $hObj) Return $bResult[0] EndFunc ;==>DeleteObject Func IEEvent_ProgressChange($PROGRESS, $PROGRESS_MAX) If $PROGRESS_MAX > 0 Then GUICtrlSetData($ProgressPage, ($PROGRESS * 100) / $PROGRESS_MAX) EndIf EndFunc ;==>IEEvent_ProgressChange Func IEEvent_StatusTextChange($TEXT) GUICtrlSetData($Statut, $TEXT) EndFunc ;==>IEEvent_StatusTextChange Func IEEvent_NavigateComplete($URL) GUICtrlSetData($Adresse, $URL) WinSetTitle($GUI, "", _IEPropertyGet($IE_EN_COURS, "title") & " - iSafari") EndFunc ;==>IEEvent_NavigateComplete #EndRegion Favoris #EndRegion Fonctions