#cs ---------------------------------------------------------------------------- AutoIt Version : 3.3.0.0 Auteur: Dididj Fonction du Script : Creer une capture d'écran en toute simplicité #ce ---------------------------------------------------------------------------- #include #include #include #include #include #include Opt('TrayMenuMode', 1) Opt('TrayAutoPause', 0) ; Début du script - Ajouter votre code ci-dessous. HotKeySet("{PRINTSCREEN}", "capture_screen") $afficher = 0 $GUI = GUICreate("Capture d'écran", 460, 200) $now = "" $New = GUICtrlCreateButton("Nouveau", 230, 60, 60) $Sav = GUICtrlCreateButton("Sauver", 300, 60, 60) $Quiter = GUICtrlCreateButton("Annuler", 370, 60, 60) $DefaultFolder = GUICtrlCreatePic(".\image\plus.jpg", 435, 75, 10, 10) $CheckGroup = GUICtrlCreateGroup("", 240, 95, 200, 60) $CheckAllScreen = GUICtrlCreateRadio("Tout l'écran", 255, 105, 180) GUICtrlSetState(-1, $GUI_CHECKED) $CheckWindows = GUICtrlCreateRadio("La fenêtre active", 255, 125, 180) GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlCreateLabel("Dans", 260, 165) $secondes = GUICtrlCreateInput("3", 288, 162, 35, 20) GUICtrlCreateUpdown($secondes) GUICtrlSetLimit(-1, 10, 1) GUICtrlCreateLabel("secondes", 330, 165) $OuvreFenetre = TrayCreateItem("Afficher") $SeparatorTray = TrayCreateItem("") $QuiterTray = TrayCreateItem("Quiter") $MenuDefaultFolder = GUICtrlCreateContextMenu($DefaultFolder) $ChangeFolder = GUICtrlCreateMenuItem("Changer le répertoire par défaut", $MenuDefaultFolder) $OpenFolder = GUICtrlCreateMenuItem("Ouvrir le répertoire par défaut", $MenuDefaultFolder) $QuiterSave = GUICtrlCreateMenuItem("Fermer la fenêtre apres avoir enregistrer", $MenuDefaultFolder) $MenuSav = GUICtrlCreateContextMenu($Sav) $SavDate = GUICtrlCreateMenuItem("Enregistrer dans le dosier par défaut avec comme nom la date", $MenuSav) If FileExists(@ScriptDir & "\settings.ini") Then $QuiterSaveCheck = IniRead(@ScriptDir & "\settings.ini", "CONFIG", "quitersave", 1) If $QuiterSaveCheck = 1 Then GUICtrlSetState($QuiterSave, $GUI_CHECKED) Else GUICtrlSetState($QuiterSave, $GUI_UNCHECKED) EndIf Else $QuiterSaveCheck = 1 GUICtrlSetState($QuiterSave, $GUI_CHECKED) IniWrite(@ScriptDir & "\settings.ini", "CONFIG", "quitersave", $QuiterSaveCheck) EndIf GUISetState(@SW_HIDE) While 1 $info = GUIGetCursorInfo($GUI) $msg = GUIGetMsg() $msgtray = TrayGetMsg() Switch $msg Case $GUI_EVENT_CLOSE GUISetState(@SW_HIDE) $afficher = 0 TrayItemSetText($OuvreFenetre, "Afficher") Case $Quiter GUISetState(@SW_HIDE) $afficher = 0 TrayItemSetText($OuvreFenetre, "Afficher") Case $New If GUICtrlRead($CheckAllScreen) = 1 Then GUISetState(@SW_HIDE) $afficher = 0 Sleep(GUICtrlRead($secondes) * 1000) capture_screen() EndIf If GUICtrlRead($CheckWindows) = 1 Then GUISetState(@SW_HIDE) $afficher = 0 Sleep(GUICtrlRead($secondes) * 1000) capture_windows() EndIf Case $Sav If FileExists(@ScriptDir & "\settings.ini") Then $Ini = IniRead(@ScriptDir & "\settings.ini", "CONFIG", "defaultfolder", @MyDocumentsDir) Else $Ini = @MyDocumentsDir FileWrite(@ScriptDir & "\settings.ini", "") EndIf $Chemin = FileSaveDialog("Sauver", $Ini, "Images JPG (*.jpg)") If @error = 0 Then If StringMid($Chemin, StringLen($Chemin) - 3, 4) = ".jpg" Or StringMid($Chemin, StringLen($Chemin) - 3, 4) = ".JPG" Then FileCopy(@TempDir & "\" & $now & ".jpg", $Chemin) If $QuiterSaveCheck = 1 Then GUISetState(@SW_HIDE) $afficher = 0 EndIf Else FileCopy(@TempDir & "\" & $now & ".jpg", $Chemin & ".jpg") EndIf EndIf Case $ChangeFolder If FileExists(@ScriptDir & "\settings.ini") Then $Ini = IniRead(@ScriptDir & "\settings.ini", "CONFIG", "defaultfolder", @MyDocumentsDir) Else $Ini = @MyDocumentsDir FileWrite(@ScriptDir & "\settings.ini", "") EndIf $Folder = FileSelectFolder("Dossier par défaut", "", 7, $Ini) If Not @error Then IniWrite(@ScriptDir & "\settings.ini", "CONFIG", "defaultfolder", $Folder) EndIf Case $OpenFolder If FileExists(@ScriptDir & "\settings.ini") Then $CheminFolder = IniRead(@ScriptDir & "\settings.ini", "CONFIG", "defaultfolder", @MyDocumentsDir) ShellExecute($CheminFolder) Else MsgBox(0, "Erreur", "Aucun dossier par défaut n'a été enregistrer") EndIf Case $QuiterSave If $QuiterSaveCheck = 1 Then GUICtrlSetState($QuiterSave, $GUI_UNCHECKED) $QuiterSaveCheck = 0 IniWrite(@ScriptDir & "\settings.ini", "CONFIG", "quitersave", $QuiterSaveCheck) Else GUICtrlSetState($QuiterSave, $GUI_CHECKED) $QuiterSaveCheck = 1 IniWrite(@ScriptDir & "\settings.ini", "CONFIG", "quitersave", $QuiterSaveCheck) EndIf Case $SavDate If FileExists(@ScriptDir & "\settings.ini") Then $Chemin = IniRead(@ScriptDir & "\settings.ini", "CONFIG", "defaultfolder", @MyDocumentsDir) FileCopy(@TempDir & "\" & $now & ".jpg", $Chemin & "\" & $now & ".jpg") If $QuiterSaveCheck = 1 Then GUISetState(@SW_HIDE) $afficher = 0 EndIf Else MsgBox(0, "Erreur", "Aucun dossier par défaut n'a été enregistrer") EndIf EndSwitch Switch $msgtray Case $QuiterTray Exit Case $OuvreFenetre If $afficher = 0 Then $afficher = 1 GUISetState(@SW_SHOW) TrayItemSetText($OuvreFenetre, "Cacher") TrayItemSetState($OuvreFenetre, $GUI_UNCHECKED) Else $afficher = 0 GUISetState(@SW_HIDE) TrayItemSetText($OuvreFenetre, "Afficher") TrayItemSetState($OuvreFenetre, $GUI_UNCHECKED) EndIf EndSwitch If _IsPressed(02) And $afficher = 1 Then If $info[0] > 15 And $info[0] < 215 And $info[1] > 15 And $info[1] < 185 Then ShellExecute(@TempDir & "\" & $now & ".jpg") While _IsPressed(02) Sleep(40) WEnd EndIf EndIf If GUICtrlRead($secondes) > 10 Or GUICtrlRead($secondes) < 1 Then GUICtrlSetData($secondes, 3) MsgBox(0, "Erreur", "Le temps doit être compris entre 1 et 10") EndIf Sleep(20) WEnd Func capture_screen() $afficher = 1 $now = StringReplace(_Now(), "/", "_") $now = StringReplace($now, ":", "-") _ScreenCapture_Capture(@TempDir & "\" & $now & ".jpg") $Pic = GUICtrlCreatePic(@TempDir & "\" & $now & ".jpg", 15, 15, 200, 170) GUISetState(@SW_SHOW) EndFunc ;==>capture_screen Func capture_windows() $afficher = 1 $now = StringReplace(_Now(), "/", "_") $now = StringReplace($now, ":", "-") $Pos = WinGetPos("[ACTIVE]") If $Pos[0] = -32000 Then MsgBox(0, "Erreur", "Aucune fenêtre sélectionnée") Else _ScreenCapture_Capture(@TempDir & "\" & $now & ".jpg", $Pos[0], $Pos[1], $Pos[0] + $Pos[2], $Pos[1] + $Pos[3]) $Pic = GUICtrlCreatePic(@TempDir & "\" & $now & ".jpg", 15, 15, 200, 170) GUISetState(@SW_SHOW) EndIf EndFunc ;==>capture_windows