J'ai créé un script permettant de basculer entre diverses fenêtres choisies (un remake du ALT+TAB de windows en quelques sortes).
Il fonctionne donc ce que j'attends ici ce sont des avis expérimentés sur ce script :
- ce qui est bien
- ce qu'il faut améliorer (et comment)
- existe-t-il des solutions (simples) pour faire la même chose avec de meilleures performances ?
Code : Tout sélectionner
;
;=============================================================================================================================================
; L'objectif de ce scripte est de reprogrammer la touche ² afin qu'elle permette de passer d'une fenêtre à une autre parmi celles choisies.
; Lorsque l'on change de fenêtre active, on minimise l'actuelle
;
; La 1ère pression de la touche ² minimisera la dernière fenêtre et activera la première.
;
; Note d'utilisation : pour pouvoir ré-arranger à volonté des icônes dans la barre de tâches Windows, on peut utiliser le logiciel gratuit
; "7+ Taskbar Tweaker" et sélectionner l'option "Ne pas grouper"
;
;=============================================================================================================================================
;
; COMBINAISON SHIFT+PAUSE = Mettre en PAUSE
; COMBINAISON SHIFT+ESC = Arreter le scripte
;
; Sources d'informations pour la récupération de caractéristiques et l'utilisation du code "handle" identifiant une fenêtre:
; http://autoitscript.fr/forum/viewtopic.php?t=5731
; http://www.autoitscript.fr/forum/viewtopic.php?t=975
; http://autoitscript.fr/forum/viewtopic.php?t=5731
Global $Paused
HotKeySet("+{PAUSE}", "TogglePause")
HotKeySet("+{ESC}", "Terminate")
HotKeySet("{F9}", "Memo_Fenetres")
HotKeySet("{²}", "Switch_Fen")
Opt("SendKeyDownDelay", 100)
;Initialisations
;---------------
$NbFen = 0
$NbFen2 = 0
$NumFenMemo = 0
$NumFenActive = 0
$t = 100
;Boite de message indiquant les raccourcis
;-------------------------------------------
MsgBox(0, "Actions", "F9 : Récupère et affiche les identifiants des N fenêtres actives" & chr(13) _
& "² : Switch entre les N fenêtres dans l'ordre de mémorisation " & chr(13) _
& "SHIFT + PAUSE : Mettre/ôter la pause du programme de macros" & chr(13) _
& "SHIFT + ESC : Arreter le programme de macros")
;Boite de message demandant le nombre de fenêtre entre lesquelles on veut switcher et dimensionnement du tableau (attention index commençant à 0 !)
;----------------------------------------------------------------------------------------------------------------------------------------------------
;InputBox ( "title", "prompt" [, "default" [, "password char" [, width [, height [, left [, top [, timeout [, hwnd]]]]]]]] )
While $NbFen <= 0
$NbFen = InputBox("Nombre de fenêtres à mémoriser", "Combien de fenêtres voulez-vous mémoriser ?")
WEnd
Global $TabFen[$NbFen]
;MsgBox(0, "Valeurs tableau", "$TabFen[0]=" & $TabFen[0] & chr(13) & "$TabFen[1]=" & $TabFen[1])
;Boucle infinie formant le corps du programme
;---------------------------------------------
While 1
Sleep($t)
WEnd
;********** MES FONCTIONS **********
;Mémorisation des ID des N fenêtres (touche F9)
;-----------------------------------------------
Func Memo_Fenetres()
If $NumFenMemo < $NbFen Then
$NumFenMemo = $NumFenMemo + 1
$TabFen[$NumFenMemo - 1] = WinGetHandle("[ACTIVE]", "")
$NumFenActive = $NumFenMemo
MsgBox(0, "Récupération caractéristique fenêtre active", "Le Handle de la fenêtre active N°= " & $NumFenActive & " est : " & $TabFen[$NumFenActive - 1])
Else
$NbFen2 = InputBox("Nombre de fenêtres à mémoriser", "Pour refaire mémorisation des fenêtres entrer leur nombre, sinon pressez sur la touche entrée ou cliquez sur OK ")
IF $NbFen2 > 0 Then
$NbFen = $NbFen2
Global $TabFen[$NbFen]
$NumFenMemo = 0
EndIf
EndIf
EndFunc
;Balayage des fenêtres mémorisées en minimisant celle que l'on "quitte" (touche ²)
;-----------------------------------------------------------------------------------
Func Switch_Fen()
WinSetState($TabFen[$NumFenActive - 1], "", @SW_MINIMIZE)
If $NumFenActive < $NbFen Then
$NumFenActive = $NumFenActive + 1
Else
$NumFenActive = 1
EndIf
WinActivate($TabFen[$NumFenActive - 1])
EndFunc
;----------------------------------
; Presser Pause/Attn pour mettre en pause
Func TogglePause()
$Paused = NOT $Paused
While $Paused
sleep(100)
ToolTip('Script is "Paused"',0,0)
WEnd
; ToolTip("")
EndFunc
;----------------------------------
; Presser Esc pour arreter le scripte
Func Terminate()
Exit 0
EndFunc
