Académique Documents
Professionnel Documents
Culture Documents
Interfaage Apoge
Language utilis :
AutoIt est un langage cr initialement ( janvier 1999 ) pour automatiser les tches rptitives dans un environnement Microsoft Windows. Ce sont les fonctions de base qui sont utilises pour simuler une action au clavier ou de la souris et grer les interractions.
Communaut originale. http://www.autoitscript.com/forum/ On peut tout faire avec. http://www.autoitscript.com/forum/files/ Mon application de gestion de quotas d'impression http://bsaoudi.free.fr/PrintJobManager/
page 1/7
Action rptitive :
Quand vous crez un lment pdagogique, vous devez commencer par trouver un code lment disponible Pour une matre TC2 Dk, a donne 1DE24xxx avec le xxx chercher comme dans le jeu la TV avant le journal du soir.
Comment voit-on que le code est dj utilis ? Une fentre s'ouvre avec une croix sur un fond rouge pour nous prvenir visuellemnt. Comme il ne s'agit pas d'une fentre en tant qu'lment Windows - dtectable par AutoIt - , nous alons simplement dtecter un point rouge l'cran.
; la matire commence 4000 $numero = 4000 ; faire Do ; s'il y a un point rouge If PixelGetColor(368, 325) = 16711680 Then ; touche 'enter' pour fermer le message Send("{enter}") ; incrmentation du numro pour le prochain essai $numero += 1 EndIf ; on teste un code lment Send("1DE2" & $numero) ; on attend 2 secondes la rponse du serveur Sleep(2000) ; jusqu' ce qu'il n'y ait plus de pixel rouge Until PixelGetColor(368, 325) <> 16711680
page 2/7
Remplir un formulaire :
Quand il n'y a plus de message d'erreur, il n'y plus qu' remplir aux bons endroits.
_Send($type[$k]) ; MATI, UE ou SEM en fonction de l'index $k MouseClick("left", 338, 82, 1, $mouseSpeed); libell _Send($court) ; la variable contenant le libell court MouseClick("left", 181, 139, 1, $mouseSpeed); libell long _Send($long) ; la variable contenant le libell long If $credits <> '' Then MouseClick("left", 377, 222, 1, $mouseSpeed); crdits _Send($credits) ; les credits s'il y en a EndIf MouseClick("left", 567, 287, 1, $mouseSpeed); composante _Send(GUICtrlRead($CIP)) MouseClick("left", 567, 455, 1, $mouseSpeed); centre d'inscription pdagogique _Send(GUICtrlRead($CIP)) MouseClick("left", 572, 476, 1, $mouseSpeed); centre d'inscription pdagogique _Send(GUICtrlRead($CIPP)) MouseClick("left", 120, 56, 1, $mouseSpeed); enregistrer Sleep(500) ; sauvegarde du numro dans un fichier INI IniWrite(@ScriptDir & "\apogee.ini", $base & $code, $type[$k], $num[$k]) MouseClick("left", 442, 51, 1, $mouseSpeed); suivant
page 3/7
( le curseur n'a pas t enregistr, il devait tre au premier centre d'inscription pdagogique. 561,456 )
page 4/7
Plus simple :
Les fonctions maison actives par une combinaison de touches qui alimentent un fichier en langage AutoIt. ( automatisation, quand tu nous tiens )
HotKeySet("!c", "_PixelColor") HotKeySet("!m", "_MousePosition") Func _PixelColor() $pos = MouseGetPos() FileWrite("positions.au3", 'PixelGetColor(' & $pos[0] & ',' & $pos[1] & ') = ' & PixelGetColor($pos[0], $pos[1])) EndFunc ;==>_PixelColor Func _MousePosition() $pos = MouseGetPos() FileWrite("positions.au3", 'MouseClick("left",' & $pos[0] & ',' & $pos[1] & ',1,$mouseSpeed)') EndFunc ;==>_MousePosition
page 5/7
Il y a dj une base locale sqlite qui a servi stocker les renseignements du fichier maquette, il suffit d'y mettre le code qui vient d'tre accept par Apoge.
( le tout est dans une boucle )
_SQLite_Exec(-1,"UPDATE matieres SET code = '1DE2" & StringFormat("%04d", $numero) & "' WHERE rowid = '" & $aResult[$j][3] & "';")
$aResult[$j][3]
traiter.
page 6/7
Func _Liste() WinActivate("Apoge - " & $base) ; Dim $rqt[2] = ["SELECT code FROM ues;", "SELECT csem FROM sems;"] Dim $rqt2[2][2] If WinExists("Apoge - " & $base) Then _Panel("!ll",0) If PixelGetColor(118,84) = 16777215 Then Send("!{f4}") ; une fenetre en trop !! EndIf $rqt2[0][0] = "SELECT matieres.code, ues.court, ues.long FROM matieres, ues WHERE ues.num = matieres.ue AND ues.num = '" $rqt2[0][1] = "';" $rqt2[1][0] = "SELECT ues.code, semestres.court, semestres.long FROM ues, semestres, matieres WHERE ues.num = matieres.ue AND semestres.num = matieres.semestre AND semestres.num = '" $rqt2[1][1] = "' GROUP BY ues.code;" For $i = 1 To 2 ; les codes ue OU codes semestres _SQLite_Query(-1, "SELECT num FROM " & $tables[$i] & ";", $hQuery) ; pour chaque code While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK ; Read Out the next Row ; les codes matieres OU code ue lister !! ConsoleWrite(@LF & $rqt2[$i - 1][0] & $aRow[0] & $rqt2[$i - 1][1]) If _SQLite_GetTable2d(-1, $rqt2[$i - 1][0] & $aRow[0] & $rqt2[$i - 1][1], $aResult, $iRows, $iColumns) = $SQLITE_OK Then If WinExists("Apoge - " & $base) Then _SaisieListe($code, $i - 1, $aResult, $iRows) For $j = 1 To $iRows _RQT("INSERT INTO listes ( code,top, element) VALUES ('" & $code & StringFormat("%04d", $num[$i - 1]) & "','" & $aResult[$j][1] & "','" & $aResult[$j][0] & "');") Next EndIf $num[$i - 1] += 1 WEnd Next If WinExists("Apoge - " & $base) Then _Close() WinActivate($s3a) _Dump(1) EndFunc ;==>_Liste
page 7/7