AIO-Log, script de connexion à Dofus [windows]

Fil fermé
Partager Rechercher
Citation :
Publié par Famille Za
Exemple avec les surnoms "Marcel" et "Bertrand" :
"Veuillez entrer la clef de Marcel :" ...
(Lancement de la fenêtre Dofus)
Quand la fenêtre "Dofus" est au premier plan (uniquement celle qui porte le nom d'origine), le titre est modifié en "Dofus - Marcel".
"Veuillez entrer la clef de Bernard" ...

("finalement nan, je vais pas connecter Marcel, mais juste Bernard".)
Les pinceaux sont emmêlés

Merci pour ton explication, j'ai tout compris *clap clap !*
Tu as une date à nous sortir, ou on attend comme pour la 2.0 ?
Merci, vraiment
Citation :
Publié par rageben

Alors, le principe est simple, je lance des clic à un endroit bien précis de l'écran (tu donne l'adresse du pixel visé)... pas fun tu va dire si on a pas tous la meme résolution.

Pour résoudre le probleme, deja il faut maximiser la fenetre systématiquement au lancement...
Pour l'histoire de la résolution j'ai pensé à un moyen "adapter à chaque résolution".

J'ai coder ceci rapidement, le but étant de trouver la zone de texte.

Code:
$prgChemin = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Ankama\Dofus", "Path")
;lancement de la fenêtre
ShellExecute("Dofus.exe","", $prgChemin)                    

WinActivate("Dofus")

While WinActivate("Dofus") = 0 
    SLeep(300)
    WinActivate("Dofus")
WEnd


$Dim = WinGetPos("Dofus") ; Regarde les coordonées de la fenêtre
If not @error Then ; Si elle et bien ouverte
    $DimA = $Dim[0] ; Enregister la coordonées x par DimA
    $DimB = $Dim[1] ; Enregister la coordonées y par DimB
    $DimC = $Dim[0] + $Dim[2] ; DimC est égal au point x + la largeur de la fenêtre, cela va donc donner le point opposé.
    $DimD = $Dim[1] + $Dim[3] ; DimD est égal au point y + la longeure de la fenêtre, cela va donc donner le point opposé.
    $DimMiddleX = $Dim[2] / 2 + $DimA ; Signifie la coordonnées X du milleu de l'écran
    $DimMiddleY = $Dim[3] / 2 + $DimB ; Signifie la coordonnées Y du milleu de l'écran
Endif
    
$Haut = PixelSearch($diMa,$dimb,$diMc,$dIMd, 883229) ;Cherche un Pixel de la fenêtre de login
While $Haut = 1 ; Ne pas quitter la boucle tant que ce pixel n'apparait pas...
    Sleep(300)
    $Haut = PixelSearch($diMa,$dimb,$diMc,$dIMd, 883229)
WEnd

    If not @error Then
        MouseClick("left",$DimMiddleX - $DimMiddleX/2, $DimMiddleY - $DimMiddleY/6.5, 1, 2)
        Send("Mon compte Ankama Games")        
        MouseClick("left",$DimMiddleX - $DimMiddleX/2, $DimMiddleY, 1, 2)
        Send("Mon mot de passe.")
        Send("{ENTER}")
    EndIf
C'est pas tout à fait au point mais j'espère que ça servira !

Bonne nuit !
@Mewain : Le p'tit problème de ta solution (et je l'ai eu avant toi, donc c'est pour ça que j'en parle ! ^^), c'est le titre de la fenêtre, ainsi que les coordonnées de la souris.
(Je répond en MP, plutôt, car ça fait un gros HS, tout de même.)
C'est pas très dur à mettre en place (n'est-ce pas ? ), mais je ne le ferai pas pour le DofusLog en natif. ^^


Et voilà, je suis globalement contente de moi pour la version 1_9b, elle est disponible !
Version compilée : DofusLog-v1_9b.exe - 265.72 kB.
Version scripte : DofusLog-v1_9b.au3 - 24.18 kB.
Code source :
Code:
#include <GUIConstants.au3>	;Nécessaire surtout pour le $GUI_EVENT_CLOSE
#include <String.au3>	;Pour l'encryptage

Global	$fichier, $prgChemin, $prgNom, $FenBase, $Label, $CFini, $fin, $Lancer, $Lance = 0, $Multico, $multi = 0, $Modifier, $Nouveau, $Supprimer, $Ajoute, $Retire, $Haut, $Bas, $Boutons, $Options, $LLancer, $LModifier, $LNouveau, $LSupprimer,  $Fichiers, $FNouv, $FCharge, $FQuit, $RNouveau, $RModifier, $RCharge, $RSupprime, $Aide, $ATuto, $aLog, $coListe, $CcoListe, $Radio
Global	$NbLignes = 2	;Nombre de lignes utilisées par entrée dans le fichier de Log
Global	$logChemin = @ScriptDir & "\log.txt"
Global	$compte = 1
Dim	$coListe[1]
If	$CmdLine[0] > 0	Then	$logChemin = $CmdLine[1]
If	$CmdLine[0] > 1	Then
	$coListe = StringSplit ($CmdLine[2], ",")
	For	$n = 0	To	UBound ($coListe) - 2
		$coListe[$n] = $coListe[$n+1]
	Next
	ReDim	$coListe[UBound ($coListe) - 1]
	$Lance = 1
EndIf
Global	$Separ = 4	;Séparateur, hauteur en pixels entre deux lignes
Global	$Hligne = 13	;hauteur présumée par ligne (13 pixels de haut, voire 14)
Global	$Ht = $Separ + 2 * $Hligne
Global	$msg
Dim	$aLog[3]
Dim	$Ccoliste[UBound ($coListe)]

$Skin = StringSplit('-1|-1|-1|-1|-1|""|""|-1|-1|-1', "|")
For	$n = 0	To	UBound ($Skin) - 2
	$Skin[$n] = $Skin[$n+1]
Next
ReDim	$Skin[UBound ($Skin) - 1]
Charge ()

While	1
	$msg = GUIGetMsg ()
	Switch	$msg
		Case	0	And	$Lance <> 1
			ContinueLoop
		Case	$GUI_EVENT_CLOSE, $FQuit
			GUIDelete ($fenBase)
			Exit
		Case	$Radio[1]	To	$Radio[UBound ($Radio) - 1]
			$compte = FRadio ($msg, $compte)
		Case	$Lancer, $LLancer, $Lance = 1
			Lance ()
		Case	$Multico
			FMultico ()
		Case	$Modifier, $LModifier
			FModifier ()
		Case	$Nouveau, $LNouveau
			FNouveau ()
		Case	$Supprimer, $LSupprimer
			FSupprimer ()
		Case	$CFini	;Bouton fermer après la connec
			$fin = GUICtrlRead ($CFini)
		Case	$Ajoute
			MAjoute ()
		Case	$Retire
			MRetire ()
		Case	$Haut
			MHaut ()
		Case	$Bas
			MBas ()
		Case	$RNouveau
			RModif ()
		Case	$RCharge
			RCharge ()
		Case	$RModifier
			RModif (1)
		Case	$RSupprime
			RSuppre ()
		Case	$FNouv, $FCharge
			GUIDelete ($fenBase)
			Charge (1)
		Case	$ATuto
			MsgBox(80,@ScriptName,"Vide...")
	EndSwitch
WEnd
;==============================Fonctions totalement créées par Za====================================
Func	Charge ($nouv = 0)
	If	Not	FileExists ($logChemin)	Or	$nouv = 1	Then
		$fichier = FileOpenDialog (@ScriptName & " - Sélectionnez ou créez un fichier contenant vos logs", $logChemin, "Text files (*.txt)|All files (*.*)", 8, "Log.txt")
		If	$fichier = ""	Then	Exit	;Ok, c'est violent, mais bon.. ^^
		TrayTip (@ScriptName, "Enregistrement de la place du Log en cours", 1, 16)
		_FileWriteToLine2 (@ScriptFullPath, 6,'Global	$logChemin = "' & $fichier & '"', 1)
		TrayTip ("", "", 0)
	Else
		$fichier = $logChemin
	EndIf
	$existe = _FileReadToArray2 ($fichier, $aLog)

	$prgChemin = RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\Ankama\Dofus", "Path") & "\"
	$prgNom = "Dofus.exe"
	If	Not	FileExists ($prgChemin & $prgNom)	Then
		If	Not	FileExists ($prgChemin & "Dofus_client.exe")	Then
			$prgNom = FileOpenDialog (@ScriptName & " - Sélectionnez votre lanceur jeu Dofus", $prgChemin, "(*.exe; *.html)|Tous (*.*)", 1, "Dofus")
		Else
			$prgNom = "Dofus_client.exe"
		EndIf
	EndIf

	If	Not	$existe	Then
		Modifier (1, $fichier)
	EndIf

	_FileReadToArray2 ($fichier, $aLog)
	Dim	$Radio[(UBound ($aLog) + 1) / $NbLignes]
	Fenetre ()
EndFunc
Func	Fenetre ()
	GUIDelete ($fenBase)
	Local	$tFen = ((UBound ($aLog) - 1) / $NbLignes)
	Local	$lFen = (200 + 200 * ($multi = 1))
	$FenBase = GUICreate (@ScriptName, $lFen, 19 + 50 + $tFen * $Ht + 30, -1, -1, 0x70000)
	GUISetBkColor ($Skin[0], $fenBase)
	GUISetCursor ($Skin[1], $fenBase)
	GUISetFont ($Skin[2], $Skin[3], $Skin[4], $Skin[5], $fenBase)
	GUISetIcon ($Skin[6], $Skin[7], $fenBase)
	GUICtrlSetDefBkColor ($Skin[8], $fenBase)
	GUICtrlSetDefColor ($Skin[9], $fenBase)
	$Label = GUICtrlCreateLabel ("Choisissez un compte à Logger :", 1, -2, -1, -1)

	$Boutons = GUIStartGroup ($FenBase)	;Séparation des groupes, en préparation ! -utile pour la boucle de focus
	$Lancer = GUICtrlCreateButton ("Lancer !", 150, $Ht / 2 + $Ht / 2 * $tFen , 47, 25)
	GUICtrlSetResizing ($Lancer, 8 + 768)
	If	(UBound ($aLog)) / $NbLignes > 2	Then
		$Multico = GUICtrlCreateCheckbox ("Multi", 150, $Hligne + $Ht + $Ht / 2 * $tFen, -1, $Hligne)
		GUICtrlSetResizing ($Multico, 8 + 768)
		GUICtrlSetState ($Multico, $multi)
	EndIf
	If	$multi = 1	And	$Lance <> 1	Then
		$Ajoute = GUICtrlCreateButton ("Ajouter ->", 255, 0)
		For	$compteBis = 0	To	UBound ($coListe) - 1
			$CcoListe[$compteBis] = GUICtrlCreateCheckbox ($aLog[$coListe[$compteBis]* $NbLignes - 1], 255, 27 + $compteBis * $Ht)
		Next
		$Retire = GUICtrlCreateButton ("<- Retirer", 275, 27 + UBound ($coListe) * $Ht)
		$Haut = GUICtrlCreateButton ("Monte", 205, $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
		$Bas = GUICtrlCreateButton ("Baisse", 205, ($Ht - 3) + $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
	EndIf
	$Modifier = GUICtrlCreateButton ("Modifier", 150, 33 + $tFen * $Ht, 47, 25, 0x8000)
	GUICtrlSetResizing ($Modifier, 8 + 64 + 768)
	$Nouveau = GUICtrlCreateButton ("Nouveau", 1, 33 + $tFen * $Ht, -1, 25, 0x8000)
	GUICtrlSetResizing ($Nouveau, 8 + 64 + 768)
	$Supprimer = GUICTRLCreateButton ("Supprimer", 75, 33 + $tFen * $Ht, -1, 25, 0x8000)
	GUICtrlSetResizing ($Supprimer,	8 + 64 + 768)
	$CFini = GUICtrlCreateCheckbox ("Fermer le script après ce compte", 15, $Hligne, -1, 13 )
	GUICtrlSetResizing ($CFini, 2 + 32 + 768)
	GUICtrlSetState ($CFini, $fin)

	$Fichiers = GUICtrlCreateMenu ("Fichier", -1, 0)
	$FNouv = GUICtrlCreateMenuItem ("Nouveau", $Fichiers, 0)
	$FCharge = GUICtrlCreateMenuItem ("Charger", $Fichiers, 1)
	$FLigneVide = GUICtrlCreateMenuItem ("", $Fichiers, 2)
	$FQuit = GUICtrlCreateMenuItem ("Quitter", $Fichiers, 3)

	$Options = GUICtrlCreateMenu ("Options", -1, 1)
	$OLog = GUICtrlCreateMenu ("Compte", $Options, 0)
	$LLancer = GUICtrlCreateMenuItem ("Lancer !", $OLog, 0)
	$LNouveau = GUICtrlCreateMenuItem ("Nouveau", $OLog, 1)
	$LModifier = GUICtrlCreateMenuItem ("Modifier", $OLog, 2)
	$LSupprimer = GUICtrlCreateMenuItem ("Supprimer", $OLog, 3)
	$ORaccourcis = GUICtrlCreateMenu ("Raccourcis", $Options, 1)
	$RNouveau = GUICtrlCreateMenuItem ("Nouveau", $ORaccourcis, 0)
	$RCharge = GUICtrlCreateMenuItem ("Charger", $ORaccourcis, 1)
	$RModifier = GUICtrlCreateMenuItem ("Modifier", $ORaccourcis, 2)
	$RSupprime = GUICtrlCreateMenuItem ("Supprimer", $ORaccourcis, 3)
	$OSkin = GUICtrlCreateMenu ("Skins", $Options, 2)
	$SNouveau = GUICtrlCreateMenuItem ("Nouveau", $OSkin, 0)
	GUICtrlSetState ($SNouveau, $GUI_DISABLE)
	$SSauvegarder = GUICtrlCreateMenuItem ("Sauver", $OSkin, 1)
	GUICtrlSetState ($SSauvegarder, $GUI_DISABLE)
	$SModifier = GUICtrlCreateMenuItem ("Modifier", $OSkin, 2)
	GUICtrlSetState ($Smodifier, $GUI_DISABLE)
	$SCharger = GUICtrlCreateMenuItem ("Charger", $OSkin, 3)
	GUICtrlSetState ($SCharger, $GUI_DISABLE)

	$Aide = GUICtrlCreateMenu ("Aide", -1, 3)
	$ATuto = GUICtrlCreateMenuItem ("Tutoriel", $Aide, 0)
	GUICtrlSetState ($ATuto, $GUI_DISABLE)

	$compteBis = 1
	While	$compteBis < (UBound ($aLog)) / $NbLignes
		$Radio[$compteBis] = GUICtrlCreateRadio ($aLog[($compteBis) * $NbLignes - 1]& " .", 5, 27 + (($compteBis - 1) * $Ht), 135 - 136, $Ht - 3, 0x2000)
		GUICtrlSetData ($Radio[$compteBis], $aLog[($compteBis) * $NbLignes - 1])
		GUICtrlSetResizing ($Radio[$compteBis], 2 + 32 + 512)
		$compteBis += 1
	WEnd
	GUICtrlSetState ($Radio[$compte], 1 + 256)
	GUICtrlSetPos ($Radio[$compte], 15, 30 + ($compte - 1) * $Ht)

	GUISetState ()
	DesAct ()
EndFunc
Func	DesAct ($DesActive = 0)	;Réactive les boutons par défaut
	If	$DesActive = 1	Then
		GUICtrlSetState ($Lancer, $GUI_DISABLE)
		GUICtrlSetState ($Modifier, $GUI_DISABLE)
		GUICtrlSetState ($Nouveau, $GUI_DISABLE)
		GUICtrlSetState ($Supprimer, $GUI_DISABLE)
		GUICtrlSetState ($Options, $GUI_DISABLE)
		GUICtrlSetState ($Fichiers, $GUI_DISABLE)
		GUICtrlSetState ($Aide, $GUI_DISABLE)
	Else
		GUICtrlSetState ($Lancer, $GUI_ENABLE)
		GUICtrlSetState ($Modifier, $GUI_ENABLE)
		GUICtrlSetState ($Nouveau, $GUI_ENABLE)
		GUICtrlSetState ($Supprimer, $GUI_ENABLE)
		GUICtrlSetState ($Options, $GUI_ENABLE)
		GUICtrlSetState ($Fichiers, $GUI_ENABLE)
		GUICtrlSetState ($Aide, $GUI_ENABLE)
	EndIf
	If	(UBound ($aLog) - 1) / $NbLignes < 2	Then
		GUICtrlSetState ($Supprimer, $GUI_DISABLE)
		GUICtrlSetState ($LSupprimer, $GUI_DISABLE)
	EndIf
EndFunc
Func	FSupprimer ()
	If	MsgBox (0x51, @ScriptName & " - Suppression", "Souhaitez-vous vraiment détruire cette entrée ?") = 2	Then	Return
	DesAct (1)
	$ligne = $compte * $NbLignes + 1
	While	$ligne < UBound ($aLog)
		$aLog[$ligne - $NbLignes] = $aLog[$ligne]
		$ligne += 1
	WEnd
	ReDim	$aLog[UBound ($aLog) - $NbLignes]
	ReDim	$Radio[UBound ($Radio) - 1]
	If	$compte > (UBound ($aLog) - 1) / $NbLignes	Then	$compte -= 1
	TrayTip (@ScriptName, "Effacement en cours...", 0, 16)
	_FileWriteFromArray2 ($fichier, $aLog, 1, UBound ($aLog) - 1)
	TrayTip ("", "", 0)
	$multi = 0
	Fenetre ()
EndFunc
Func	FModifier ()
	DesAct (1)
	If	Modifier ($compte, $fichier)	Then
		Fenetre ()
	Else
		Desact ()
	EndIf
EndFunc
Func	FNouveau ()
	DesAct (1)
	ReDim	$aLog[UBound ($aLog) + $NbLignes]
	ReDim	$Radio[UBound ($Radio) + 1]
	If	Modifier (((UBound ($aLog) - 1) / $NbLignes) , $fichier)	Then
		Fenetre ()
	Else
		ReDim	$aLog[UBound ($aLog) - $NbLignes]
		ReDim	$Radio[UBound ($Radio) - 1]
	EndIf
	DesAct ()
EndFunc
Func	Modifier ($compteBis, $fich)
	$compteBis = $NbLignes * ($compteBis - 1) + 1
	Local	$FenMod = GUICreate (@ScriptName, 200, $HLigne * 12, -1, -1, -1, 0x00000080)
	Local	$LabelSurnom = GUICtrlCreateLabel ("Veuillez entrer un" & @CRLF & " pseudonyme :", 0, 0)
	Local	$LabelClef = GUICtrlCreateLabel (@CRLF & "Clef de cyptage :", 120, 0)
	Local	$LabelNDC = GUICtrlCreateLabel ("Veuillez entrer le nom du compte Dofus :", 0, $Hligne * 4)
	Local	$LabelMDP = GUICtrlCreateLabel ("Veuillez entrer le mot de pass associé :", 0, $Hligne * 7)
	Local	$InputPseudo = GUICtrlCreateInput ($aLog[$compteBis], 2, $Hligne * 2, 125)
	Local	$InputClef = GUICtrlCreateInput ("", 149, $Hligne * 2, 50)
	Local	$InputNDC = GUICtrlCreateInput ("", 2, $Hligne * 5, 196)
	Local	$InputMDP = GUICtrlCreateInput ("", 2, $Hligne * 8, 196)
	Local	$BValide = GUICtrlCreateButton ("Valider", 2, $Hligne * 10)
	Local	$BAnnule = GUICtrlCreateButton ("Annuler", 100, $Hligne * 10)
	
	GUISetState ()
	
	While	1
		$Mmsg = GUIGetMsg ()
		Switch	$Mmsg
			Case	0
				ContinueLoop
			Case	$GUI_EVENT_CLOSE
				GUIDelete ($FenMod)
				Return 0
			Case	$BAnnule
				GUIDelete ($FenMod)
				Return 0
			Case	$BValide
				If	MsgBox (0x51, @ScriptName & " - Modifications", "Attention, vous vous apprêtez à" & @CRLF & "modifier définitivement ces données." & @CRLF & "Êtes-vous sûr ?") = 2	Then	Return 0
				TrayTip (@ScriptName, "Écriture en cours...", 0, 16)
				If	GUICtrlRead ($InputPseudo) <> ""	Then
					$aLog[$compteBis] = GUICtrlRead ($InputPseudo, 0)
					_FileWriteToLine2 ($fichier, $compteBis, $aLog[$compteBis], 1)
					If	GUICtrlRead ($InputNDC) <> ""	and	GUICtrlRead ($InputMDP) <> ""	Then ;Si le nom de compte ou le mot de pass sont renseignés, modifier en conséquence. Si aucun des deux ne l'est, mais que la ligne est vide -> go² ajouter un simple"{TAB}".
						If	GUICtrlRead ($InputClef) = "" 	Then
							$aLog[$compteBis + 1] = GUICtrlRead ($InputNDC) & "{TAB}" & GUICtrlRead ($InputMDP)
						Else
							$aLog[$compteBis + 1] = _StringEncrypt (1, GUICtrlRead ($InputNDC), GUICtrlRead ($InputClef)) & "{TAB}" & _StringEncrypt (1, GUICtrlRead ($InputMDP), GUICtrlRead ($InputClef))
						EndIf
						_FileWriteToLine2 ($fichier, $compteBis + 1, $aLog[$compteBis + 1], 1)
					EndIf
				EndIf
				TrayTip ("", "", 0)
				GUIDelete ($FenMod)
				Return 1
		EndSwitch
	WEnd
EndFunc
Func	FRadio ($mess, $compteBis)
	If	$mess <> $Radio[$compteBis]	Then
		GUICtrlSetPos ($Radio[$compteBis], 5, 27 + (($compteBis - 1) * $Ht))
		While	$mess <> $Radio[$compteBis]
			$compteBis += 1
			If	$compteBis > (UBound ($Radio) - 1)	Then
				$compteBis = 1
			EndIf
		WEnd
		GUICtrlSetPos ($Radio[$compteBis], 15, 30 + (($compteBis - 1) * $Ht))
	Else
		If	$multi = 1	Then
			MAjoute ()
		Else
			FLancer ($compteBis)
			If	$fin = $GUI_CHECKED	Then	Exit
		EndIf
	EndIf
	Return $compteBis
EndFunc
Func	FMultico ()
	$multi = GUICtrlRead ($Multico)
	If	$coListe[0] = ""	Then	$coListe[0] = $compte
	Fenetre ()
EndFunc
Func	MAjoute ()
	Local	$n
	For	$n = 0	To	UBound ($coListe) - 1
		If	$coListe[$n] = $compte	Then	ContinueLoop	2
	Next
	ReDim	$coListe[UBound ($coListe) + 1]
	ReDim	$CcoListe[UBound ($CcoListe) + 1]
	$coListe[UBound ($coListe) - 1] = $compte
	$CcoListe[UBound ($CcoListe) - 1] = GUICtrlCreateCheckbox ($aLog[$coListe[UBound ($CcoListe) - 1]* $NbLignes - 1], 255, 27 + (UBound ($CcoListe) - 1) * $Ht)
	GUICtrlSetPos ($Retire, 275, 27 + UBound ($coListe) * $Ht)
	GUICtrlSetPos ($Haut, 205, $Ht / 2 + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
	GUICtrlSetPos ($Bas, 205, ($Ht - 3) + $Ht / 2 + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
EndFunc
Func	MRetire ()
	Local	$n = 0, $q
	While	$n < UBound ($CcoListe)
		If	GUICtrlRead ($CcoListe[$n]) = $GUI_CHECKED	Then
			$q = $n
			While	$q < UBound ($CcoListe) - 1
				$coListe[$q] = $coListe[$q + 1]
				GUICtrlSetState ($CcoListe[$q], GUICtrlRead ($CcoListe[$q + 1]))
				GUICtrlSetData ($CcoListe[$q], GUICtrlRead ($CcoListe[$q + 1], 1))
				$q += 1
			WEnd
			GUICtrlDelete ($CcoListe[UBound ($CcoListe) - 1])
			If	UBound	($coListe) > 1	Then
				ReDim	$coListe[UBound ($coListe) - 1]
				ReDim	$CcoListe[UBound ($CcoListe) - 1]
				GUICtrlSetPos ($Retire, 275, 27 + UBound ($coListe) * $Ht)
				GUICtrlSetPos ($Haut, 205, $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
				GUICtrlSetPos ($Bas, 205, ($Ht - 3) + $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
				$n -= 1
			Else
				$multi = 0
				Fenetre ()
			EndIf
		EndIf
		$n += 1
	WEnd
EndFunc
Func	MHaut ()
	Local	$n = 1, $z, $y
	While	$n < UBound ($CcoListe)
		If	GUICtrlRead ($CcoListe[$n]) = $GUI_CHECKED	Then
			$z = GUICtrlRead ($CcoListe[$n])
			$y = GUICtrlRead ($CcoListe[$n], 1)
			GUICtrlDelete ($CcoListe[$n])
			$CcoListe[$n] = GUICtrlCreateCheckbox (GUICtrlRead ($CcoListe[$n - 1], 1), 255, 27 + $n * $Ht)
			GUICtrlSetState ($CcoListe[$n], GUICtrlRead ($CcoListe[$n - 1]))
			GUICtrlDelete ($CcoListe[$n - 1])
			$CcoListe[$n - 1] = GUICtrlCreateCheckbox ($y, 255, 27 + ($n - 1) * $Ht)
			GUICtrlSetState ($CcoListe[$n - 1], $z)
			$z = $coListe[$n]
			$coListe[$n] = $coListe[$n - 1]
			$coListe[$n - 1] = $z
		EndIf
		$n = $n + 1
	WEnd
EndFunc
Func	MBas ()
	Local	$n = UBound ($CcoListe) - 2, $z
	While	$n >= 0
		If	GUICtrlRead ($CcoListe[$n]) = $GUI_CHECKED	Then
			$z = GUICtrlRead ($CcoListe[$n])
			$y = GUICtrlRead ($CcoListe[$n], 1)
			GUICtrlDelete ($CcoListe[$n])
			$CcoListe[$n] = GUICtrlCreateCheckbox (GUICtrlRead ($CcoListe[$n + 1], 1), 255, 27 + $n * $Ht)
			GUICtrlSetState ($CcoListe[$n], GUICtrlRead ($CcoListe[$n + 1]))
			GUICtrlDelete ($CcoListe[$n + 1])
			$CcoListe[$n + 1] = GUICtrlCreateCheckbox ($y, 255, 27 + ($n + 1) * $Ht)
			GUICtrlSetState ($CcoListe[$n + 1], $z)
			$z = $coListe[$n]
			$coListe[$n] = $coListe[$n + 1]
			$coListe[$n + 1] = $z
		EndIf
		$n = $n - 1
	WEnd
EndFunc
Func	RModif ($mod = 0)
	Local	$n, $r
	$fenRac = GUICreate (@ScriptName, 170, 4 * $Ht + $Hligne, -1, -1, -1, 0x00000080)
	GUICtrlCreateLabel ("Sélectionnez le script :", 0, 0, -1, 2 * $Hligne)
	If	$mod = 0	Then
		$IScript = GUICtrlCreateInput (@ScriptFullPath, 5, $Hligne, 100)
		$BSParc = GUICtrlCreateButton ("Parcourir", 110, $Hligne, -1, 2 * $Hligne)
		GUICtrlCreateLabel ("Sélectionnez le log :", 0, $Ht + $Hligne, -1, 2 * $Hligne)
		$ILog = GUICtrlCreateInput ($logChemin, 5, $Ht + 2 * $Hligne, 100)
		$BLParc = GUICtrlCreateButton ("Parcourir", 110, $Ht + 2 * $Hligne, -1, 2 * $Hligne)
		$LComptes = GUICtrlCreateLabel ('Entrez les n° des comptes :', 0, 2 * $HT + 2 * $Hligne, -1, 2 * $Hligne)
		GUICtrlSetTip ($LComptes, "Entrez le n° des comptes dans la liste," & @CRLF & "séparés par une simple virgule sans espace.")
		$IComptes = GUICtrlCreateInput ($compte, 5, 2 * $Ht + 3 * $Hligne, 100)
		$BValide = GUICtrlCreateButton ("Valider", 110, 2 * $Ht + 3 * $Hligne, -1, 2 * $Hligne)
	Else
		$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
		If	$n = ""	Then	Return
		$r = FileGetShortcut ($n)
		$IScript = GUICtrlCreateInput ($r[0], 5, $Hligne, 100)
		$BSParc = GUICtrlCreateButton ("Parcourir", 110, $Hligne, -1, 2 * $Hligne)
		GUICtrlCreateLabel ("Sélectionnez le log :", 0, $Ht + $Hligne, -1, 2 * $Hligne)
		$ILog = GUICtrlCreateInput (StringMid ($r[2], 3, StringInStr ($r[2], '"', 2, 2) - 3), 5, $Ht + 2 * $Hligne, 100)
		$BLParc = GUICtrlCreateButton ("Parcourir", 110, $Ht + 2 * $Hligne, -1, 2 * $Hligne)
		$LComptes = GUICtrlCreateLabel ('Entrez les n° des comptes :', 0, 2 * $HT + 2 * $Hligne, -1, 2 * $Hligne)
		GUICtrlSetTip ($LComptes, "Entrez le n° des comptes dans la liste," & @CRLF & "séparés par une simple virgule sans espace.")
		$IComptes = GUICtrlCreateInput (StringMid ($r[2], StringInStr ($r[2], '"', 2, 2) + 2), 5, 2 * $Ht + 3 * $Hligne, 100)
		$BValide = GUICtrlCreateButton ("Valider", 110, 2 * $Ht + 3 * $Hligne, -1, 2 * $Hligne)
	EndIf
	GUISetState ()
	
	While	1
		$RMsg = GUIGetMsg ()
		Switch	$RMsg
			Case	0
				ContinueLoop
			Case	$BSParc
				$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre script :", @ScriptDir, "Scripts (*.au3;*.exe)|Tous (*.*)", 8, @ScriptName)
				If	$n <> ""	Then	GUICtrlSetData ($IScript, $n)
			Case	$BLParc
				$n = FileOpenDialog (@ScriptName & " - Sélectionnez le fichier contenant vos logs :", $logChemin, "Textes (*.txt)|Tous (*.*)", 8, "Log.txt")
				If	$n <> ""	Then	GUICtrlSetData ($ILog, $n)
			Case	$BValide
				$n = FileOpenDialog (@ScriptName & " - Choissez le nom et répertoire du raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
				If	$n = ''	Then	ContinueCase
				If	StringInStr ($n, ".lnk") = 0	Then	$n &= ".lnk"
				FileCreateShortcut (GUICtrlRead ($IScript), $n, "", ' "' & GUICtrlRead ($ILog) & '" ' & GUICtrlRead ($IComptes))
				ContinueCase
			Case	$GUI_EVENT_CLOSE
				GUIDelete ($fenRac)
				Return
		EndSwitch
	WEnd
EndFunc
Func	RCharge ()
	$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
	If	$n = ""	Then	Return
	$r = FileGetShortcut ($n)
	$logChemin = StringMid ($r[2], 3, StringInStr ($r[2], '"', 2, 2) - 3)
	$coListe = StringSplit (StringMid ($r[2], StringInStr ($r[2], '"', 2, 2) + 2), ",")
	For	$n = 0	To	UBound ($coListe) - 2
		$coListe[$n] = $coListe[$n+1]
	Next
	ReDim	$coListe[UBound ($coListe) - 1]
	$Lance = 1
	GUIDelete ($fenBase)
	Charge ()
	Return
EndFunc
Func	RSuppre ()
	$Racc = FileOpenDialog (@ScriptName & " - Sélectionnez votre raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName)
	If	$Racc <> ""	Then	FileDelete ($Racc) ;Sans confirmation, violente que je suis. ^^
EndFunc
Func	Lance ()
	If	$multi = 1	Or	$Lance = 1	Then
		For	$n = 0	To	UBound ($coListe) - 1
			If	$coListe[$n] <= ((UBound ($aLog) - 1) / $NbLignes) And	$coListe[$n] > 0	Then  FLancer ($coListe[$n])
		Next
		$Lance = 0
	Else
		FLancer ($compte)
	EndIf
	If	$fin = $GUI_CHECKED	Then	Exit
EndFunc
Func	FLancer ($compteBis = $compte)
	DesAct (1)
	$compteBis = ($compteBis - 1) * $NbLignes + 1
	If	StringInStr ($aLog[$compteBis + 1], "{TAB}") = 0	Then	Return	;Permet de vérifier que la ligne est bien censée contenir un login/pss cryptés
	Local	$Clef = InputBox (@ScriptName & " - Code du compte " & $aLog[$compteBis], "Veuillez entrer la clef de " & $aLog[$compteBis]& " :", "", "°")
	If	@error = 1	Then
		DesAct ()
		Return
	EndIf
	Local	$NDCMDP = StringSplit ($aLog[$compteBis + 1], "{TAB}", 1)
	If	$Clef <> ""	Then
		$NDCMDP[1] = _StringEncrypt (0, $NDCMDP[1], $Clef)
		$NDCMDP[2] = _StringEncrypt (0, $NDCMDP[2], $Clef)
	EndIf
	If	MsgBox (0x51, @ScriptName, "Lancement de la fenêtre Dofus !" & @CRLF & "Cliquez sur Annuler pour fermer." & @CRLF & Message(), 2) <> 2	Then
		TrayTip (@Scriptname, "Lancement de la fenêtre Dofus.", 0)
		ShellExecute ($prgNom, "", $prgChemin)
		AutoItSetOption ("WinTitleMatchMode", 3)
		Do
			Sleep (200)
		Until	WinActive ("Dofus  ")	Or	WinActive ("Dofus - Opera")	Or	WinActive ("Dofus - Windows Internet Explorer")	Or	WinActive ("Dofus - Mozilla Firefox")
		AutoItSetOption ("WinTitleMatchMode", 1)
		WinSetTitle ("Dofus", "", "Dofus - " & $aLog[$compteBis])
		TrayTip ("","",0)
		Sleep (1000)
		Traytip (@ScriptName, "Veuillez placer votre curseur" & @CRLF & 'sur la zone "Compte Ankama".', 10)
		AutoItSetOption ("MouseCoordMode", 0)
		$posDof = WinGetClientSize ("Dofus - " & $aLog[$compteBis])
		Do
			$posCur = MouseGetPos ()
			Sleep(20)
		Until	(MouseGetCursor () = 5)	And	($posCur[0] < $posDof[0])	And	($posCur[1] < $posDof[1])	And	($posCur[0] > 0)	And	($posCur[1] > 0)	And	WinActive ("Dofus - " & $aLog[$compteBis]) ;Le cureseur est bien dans la fenêtre Dofus choisie + truc de texte
		MouseClick ("left")
;~ Send ("^f")	;Mode "plein écran"
		Send ($NDCMDP[1], 1)
		Send ("{TAB}")
		Send ($NDCMDP[2], 1)
		AutoItSetOption ("MouseCoordMode", 1)
		TrayTip (@Scriptname, "Veuillez passer votre souris" & @CRLF & 'sur le bouton "OK".', 0)
		Do
			sleep (20)
			$cur = MouseGetPos ()
		Until	((MouseGetCursor () = 0)	And	(PixelGetColor ($cur[0], $cur[1]) = 0xFF9900))
		MouseClick ("left")
		TrayTip ("", "", 0)
	EndIf
	DesAct ()
	Return
EndFunc
Func	Message ()
	Switch	Random (0, 4, 1)
		Case	0
			Return	"(\__/)" & @CRLF & "( ' . ' )" & @CRLF & '(")_(")'
		Case	1
			Return	@CRLF & "Vous pouvez aussi aller jouer dehors,"	& @CRLF & "avec les papillons, les fleurs et les oiseaux."
		Case	2
			Return	""
		Case	3
			Return	@CRLF & "Ou patientez 2 secondes," & @CRLF & "que la fenêtre se ferme d'elle-même."
		Case	4
			Return	@CRLF & "La Vie est comme cette boîte de dialogue :" & @CRLF & "C'est quand elle se ferme qu'on arrive à l'essentiel."
	EndSwitch
EndFunc
;==========================Fonctions AutoIt 3 modifiées========================================
Func	_FileWriteToLine2 ($sFile, $iLine, $sText, $fOverWrite = 0)
	If	Not	FileExists ($sFile)	Then	FileWrite ($sFile, @CRLF)
	Local	$filtxt = FileRead ($sFile, FileGetSize ($sFile))
	$filtxt = StringSplit ($filtxt, @CRLF, 1)
	If	$filtxt[0]< $iLine	Then	ReDim	$filtxt[$iLine + 1]
	Local	$fil = FileOpen ($sFile, 2), $i
	For	$i = 1	To	UBound ($filtxt) - 1
		If	$i = $iLine	Then
			If	$fOverWrite = 1	Then
				If	$sText <> @CRLF	Then
					If	$i < UBound ($filtxt, 1) - 1	Then
						FileWrite ($fil, $sText & @CRLF)
					ElseIf	$i = UBound ($filtxt, 1) - 1	Then
						FileWrite ($fil, $sText) 
					EndIf
				Else
					If	$i < UBound ($filtxt, 1) - 1	Then
						FileWrite ($fil, $sText)
					EndIf
				EndIf
			EndIf
			If	$fOverWrite = 0	Then
				If	$i < UBound ($filtxt, 1) - 1	Then
					FileWrite ($fil, $sText & @CRLF)
					FileWrite ($fil, $filtxt[$i]& @CRLF)
				ElseIf	$i = UBound ($filtxt, 1) - 1	Then
					FileWrite ($fil, $sText & @CRLF)
					FileWrite ($fil, $filtxt[$i])
				EndIf
			EndIf
		ElseIf	$i < UBound ($filtxt, 1) - 1	Then
			FileWrite ($fil, $filtxt[$i]& @CRLF)
		ElseIf	$i = UBound ($filtxt, 1) - 1	Then
			FileWrite ($fil, $filtxt[$i])
		EndIf
	Next
	FileClose ($fil)
	Return	1
EndFunc	;==>_FileWriteToLine2
Func _FileWriteFromArray2 ($File, $a_Array, $i_Base = 0, $i_UBound = -1)
	Local	$hFile, $x
	If	IsString ($File)	Then
		$hFile = FileOpen ($File, 2)
	Else
		$hFile = $File
	EndIf
	If	$hFile = -1	Then	Return	SetError (1, 0, 0)
	If	$i_UBound < 1	Then	$i_UBound = UBound ($a_Array)
	$x = $i_Base
	Do
		FileWrite ($hFile, $a_Array[$x]& @CRLF)
		$x += 1
	Until	$x = $i_UBound
	FileWrite ($hFile, $a_Array[$i_UBound])
	If	IsString ($File)	Then	FileClose ($hFile)
EndFunc  	;==>_FileWriteFromArray2
Func	_FileReadToArray2 ($sFilePath, ByRef	$aArray)
	Local	$hFile
	$hFile = FileOpen ($sFilePath, 0)
	If	$hFile = -1	Then
		SetError (1)
		Return	0
	EndIf
	$aArray = StringSplit (StringStripCR (FileRead ($hFile, FileGetSize ($sFilePath))), @CRLF)
	FileClose ($hFile)
	Return	1
EndFunc	;==>_FileReadToArray2
616 lignes, et je sais plus où j'ai vu le nombre de caractères.

Améliorations par rapport à la 1_9 :
-> Meilleure prise en charge de la zone de saisie du nom de compte, il n'est (normalement...) plus possible d'envoyer des identifiants dans une mauvaise fenêtre suite à une fausse manipulation
-> Système de raccourcis totalement implanté ! Le fonctionnement n'est pas encore très intuitif, mais c'est une bonne base.
- - > Création/modification de raccourcis : vous entrez la position du DofusLog (elle est la bonne par défaut), vous entrez la position du fichier de logs (idem), ainsi que les numéros des comptes de la liste à connecter. Pour en sélectionner plusieurs de suite, il suffit de les écrire à la suite, séparés d'une simple virgule (sans espace !).
Il faut 'valider' pour que le raccourcis soit créé dans le répertoire désiré, avec le nom désiré. (Pas d'inquiétude : quel que soit le nom, l'extension raccourcis ".lnk" sera ajoutée de toute manière en cas d'absence.)
- - > Chargement d'un raccourcis : Permet de connecter les comptes choisis d'un raccourcis. Pratique pour faire des pré-sélections de teams à logguer, mais aussi si vous avez lancé le DofusLog au-lieu du raccourcis désiré. ^^
- - > Supprimer un raccourcis : Supprimer un raccourcis. (Sis, j'vous jure !) Y'a pas de confirmation avant la suppression, je devrais en rajouter une ?
-> Suppression de la bulle d'aide d'accueil de la version bêta 2 : elle ne servait à rien, et ne se fermait pas d'elle-même.
-> Meilleure gestion des différentes bulles d'aides, il en manque encore quelques-unes (notamment au niveau des raccourcis et des créations/modifications des entrées des comptes).

Bugs et remarques pour les évolutions futures :
-> J'ai ciblé le bug quand on supprime un compte de la liste principale avec la multico ouverte : ça sera réglé pour la prochaine fois.
Remède : Veuillez éviter de supprimer un compte de la liste principale quand il est aussi présent dans la liste de Multi : enlevez-le de la liste secondaire auparavant.
(Aucune influence sur le fonctionnement, sauf une fermeture du script à la réactivation de la Multi.)
-> Je n'ai pas encore modifié la possibilité de pouvoir changer un nom de compte OU un mot de pass pour une entrée de compte : idem qu'au-dessus, rendez-vous la prochaine fois.
Remède : Veuillez remplir les deux champs si vous en modifiez un. Aucun plantage, sauf que le champs non renseigné sera juste purement et simplement vierge.
(Aucune influence sur le script non-plus, il fonctionne très bien avec l'un ou l'autre [ou même les deux ^^'] champs vides.)
-> Quelques zones de saisies semblent être "décalées" par rapport à l'affichage : je ne sais pas d'où ça vient, mais ça sera réglé avec les skins (qui seront là à la 1_9c !).
Enfin, j'espère que ça réglera ce soucis ! Et je compte sur vous pour me faire des graphismes que même Ankama voudrait vous engager !

Hum.. C'est tout pour le moment !

Za.
@Miss-prespic : (flood)
Nan, j'ai remplacé le Lapin par un truc aléatoire : il est toujours là, mais 1 chance sur 5 d'apparaître.
Je vous laisse profiter quelques temps de ces magnifiques phrases de remplacement, je les changerai peut-être entre 2 versions. (Ou les incluerai dans le skin, tiens. Bonne idée ça ! ^^)
Bravo ma Zamzam n-n
Allez avoue que t'as fait des Mikeys des cobayes de dofuslog

Bon sinon ton logiciel marche tres bien et me sert beaucoup

Merci Zamiiiiiiiiiiiiiii

Miss

Edit: (t'as virer le petit lapin ? :x)
Je viens de changer la page d'accueil du Wiki : vous pouvez la compléter/modifier/arranger à votre guise, je suis pas douée là-dedans !
Je pense peut-être à inclure une capture d'écran de mon DofusLog (avec la liste des surnoms. ^^)

Za.
Dur, duur... Je n'arrive pas à me décider sur quoi commencer pour faire les skins.

Y'a plein de choix : avoir une forme commune pour tous, et permettre la modification des valeurs dans un tronc commun ?
Exemple : Type|Contenu|positionX|positionY|étendueX|étendueY|options|particularités = Bouton|"Lancer !"|36|24|-1|-1|7|
Ou accepter (mais c'est plus risqué) des lignes de commandes dans un fichier texte annexes ?
Exemple (dans le fichier texte) : $Lancer=GUICtrlCreateButton("Lancer !",36,24,-1,-1,7)
Ou même un mix des deux solutions plus complexes ?

Et pour l'évolution prévue, j'ai changé une option du raccourcis pour la prochaine fois : le DofusLog a automatiquement la case "fermer le script quand il a fini" cochée quand on lance par raccourcis. Compatible avec plusieurs comptes de suite, évidemment.
Vu que je n'arrive pas à avancer sur le skin, je vais faire l'autre petit bout à traiter : les modifications de comptes, à rendre valides quand une seule des deux parties (nom de compte ou mot de pass d'un surnom) sont modifiés.

Appel aux motivés pour me donner une idée de fonctionnement pour les skins !

Za.

Edit : Oui, ça c'est déjà prévu. x)
Reste à créer le fichier qui contient les skins, ainsi que les possibilités annexes ! (Ajout d'images partout, par exemple.)

Re-Edit : Ajouté la possibilité de modifier le nom de compte OU le mot de pass selon l'envie, il est possible de mettre une clef différente pour chaque valeur, sauf que ça ne permet plus de se logguer. (Cette fonction est surtout utile si vous avez modifié votre mot de pass, sans avoir à ré-entrer le nom de compte.)
Et j'avance sur le gros bout, j'ai trouvé un début d'idée !

Ha, tant que j'y pense ! Pour Polobob, qui voulait mettre une clef dépendante de son registre, y'a un moyen très simple sans modifier grand-chose !
Remplacer dans la fonction Modifier () la variable $InputClef
Code:
	Local	$InputPseudo = GUICtrlCreateInput ($aLog[$compteBis], 2, $Hligne * 2, 125)
	Local	$InputClef = GUICtrlCreateInput ("", 149, $Hligne * 2, 50)
	Local	$InputNDC = GUICtrlCreateInput ("", 2, $Hligne * 5, 196)
Par :
Code:
	Local	$InputPseudo = GUICtrlCreateInput ($aLog[$compteBis], 2, $Hligne * 2, 125)
	Local	$InputClef = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductId") ;le p'tit bout de registre souhaité à mettre ici
	Local	$InputNDC = GUICtrlCreateInput ("", 2, $Hligne * 5, 196)
Et ainsi, pu besoin de toucher au reste du code ! ^^

Dernier édit avant uppage de Topic : Mwahaha, j'ai trouvé une manière roksante de faire des skins, vous pourrez m'en dire des nouvelles, ahahaha !
Bon, par-contre un (unique) shutter de ponche en cul-sec ayant eu raison de mes capacités intellectuelles, je doute de terminer ce soir.
Et même si c'était le cas, je doute encore plus fortement de mettre à disposition dès ce soir !
(Et même si c'était le cas, il me reste 26 minutes pour finir.. Tendu. :P)
Je suis nul en programmation, je veux juste avoir la méthode la plus simple, où l'on télécharge "skin1" et qu'on le mette dans un répertoire, que dans DofusLog on choisisse : skin, charger : skin1
Bonne chance ?
En attendant de terminer effectivement ce que je suis en-train de faire, voici le contenu (susceptible d'être modifié ^^) du skin "original" du DofusLog :
Code:
Fenêtre Principale :
	Type : Fenêtre
	titre1 : @ScriptName
	largeur : $lFen
	hauteur : 19+50+$tFen*$Ht+30
	posx : -1
	posy : -1
	style : 0x70000

	Fichiers :
		Type : Menu
		titre1 : "Fichier"
		Relation : -1
		Positionnement : 0

		Nouveau :
			Type : S-Menu
			titre1 : "Nouveau"
			Relation : $Fichiers
			Positionnement : 0

		Charge :
			Type : S-Menu
			titre1 : "Charger"
			Relation : $Fichiers
			Positionnement : 1

		Espace :
			Type : S-Menu
			titre1 : ""
			Relation : $Fichiers
			Positionnement : 2

		Quitte :
			Type : S-Menu
			titre1 : "Quitter"
			Relation : $Fichiers
			Positionnement : 3

	Options :
		Type : Menu
		titre1 : "Options"
		Relation : -1
		Positionnement : 1

		Menu log :
			Type : Menu
			titre1 : "Compte"
			Relation : $Options
			Positionnement : 0

			Lancer :
				Type : S-Menu
				titre1 : "Lancer !"
				Relation : $OLog
				Positionnement : 0

			Nouveau :
				Type : S-Menu
				titre1 : "Nouveau"
				Relation : $OLog
				Positionnement : 1

			Modifier :
				Type : S-Menu
				titre1 : "Modifier"
				Relation : $OLog
				Positionnement : 2

			Supprimer :
				Type : S-Menu
				titre1 : "Supprimer"
				Relation : $OLog
				Positionnement : 3

		Raccourcis :
			Type : Menu
			titre1 : "Raccourcis"
			Relation : $Options
			Positionnement : 1

			Nouveau :
				Type : S-Menu
				titre1 : "Nouveau"
				Relation : $ORaccourcis
				Positionnement : 0

			Charger :
				Type : S-Menu
				titre1 : "Charger"
				Relation : $ORaccourcis
				Positionnement : 1

			Modifier :
				Type : S-Menu
				titre1 : "Modifier"
				Relation : $ORaccourcis
				Positionnement : 2

			Supprimer :
				Type : S-Menu
				titre1 : "Supprimer"
				Relation : $ORaccourcis
				Positionnement : 3

		Skins :
			Type : Menu
			titre1 : "Skins"
			Relation : $Options
			Positionnement : 2

			Nouveau :
				Type : S-Menu
				titre1 : "Nouveau"
				Relation : $OSkin
				Positionnement : 0
				État : $GUI_DISABLE

			Sauvegarder :
				Type : S-Menu
				titre1 : "Sauver"
				Relation : $OSkin
				Positionnement : 1
				État : $GUI_DISABLE

			Modifier :
				Type : S-Menu
				titre1 : "Modifier"
				Relation : $OSkin
				Positionnement : 2
				État : $GUI_DISABLE

			Charger :
				Type : S-Menu
				titre1 : "Charger"
				Relation : $OSkin
				Positionnement : 3
				État : $GUI_DISABLE

	Aide :
		Type : Menu
		titre1 : "Aide"
		Relation : -1
		Positionnement : 3

		Tuto :
			Type : S-Menu
			titre1 : "Tutoriel"
			Relation : $Aide
			Positionnement : 0
			État : $GUI_DISABLE

	Phrase d'accueil :
		Type : Label
		titre1 : "Choisissez un compte à Logger :"
		posx : 1
		posy : -2

	Boutons :
		Type : groupe
		parentée : $fenBase

		Lancer :
			Type : Bouton
			titre1 : "Lancer !"
			posx : 150
			posy : $Ht/2+$Ht/2*$tFen
			largeur : 47
			hauteur : 25

		Multi :
			Type : Checkbox
			titre1 : "Multi"
			posx : 150
			posy : $Hligne+$Ht+$Ht/2*$tFen
			largeur : -1
			hauteur : $Hligne
			Resize : 8+768
			État : $multi

		Liste multi :
			Type : Checkbox
			titre1 : $aLog[$coListe[$compteBis]*$NbLignes-1]
			posx : 255
			posy : 27+$compteBis*$Ht

		Retirer :
			Type : Bouton
			titre1 : "<- Retirer"
			posx : 275
			posy : 27+Ubound($coListe)*$Ht

		Remonter :
			Type : Bouton
			titre1 : "Monte"
			posx : 205
			posy : $Ht+$Ht*(UBound($CcoListe)-1)/2
			largeur : 40

		Baisser :
			Type : Bouton
			titre1 : "Baisse"
			posx : 205
			posy : ($Ht-3)+$Ht+$Ht*(UBound($CcoListe)-1)/2
			largeur : 40

		Modifier :
			Type : Bouton
			titre1 : "Modifier"
			posx : 150
			posy : 33+$tFen*$Ht
			largeur : 47
			hauteur : 25
			style : 0x8000
			Resize : 8+64+768

		Nouveau :
			Type : Bouton
			titre1 : "Nouveau"
			posx : 1
			posy : 33+$tFen*$Ht
			largeur : -1
			hauteur : 25
			style : 0x8000
			Resize : 8+64+768

		Supprimer :
			Type : Bouton
			titre1 : "Supprimer"
			posx : 75
			posy : 33+$tFen*$Ht
			largeur : -1
			hauteur : 25
			style : 0x8000
			Resize : 8+64+768

		Finir la connexion :
			Type : Checkbox
			titre1 : "Fermer le script après ce compte"
			posx : 15
			posy : $Hligne
			largeur : -1
			hauteur : 13
			Resize : 2+32+768
			État : $fin

		Surnoms :
			Type : Radio
			titre1 : $aLog[$compteBis*$NbLignes-1]&" ."
			posx : 5
			posy : 27+(($compteBis-1)*$Ht)
			largeur : 135-136
			hauteur : $Ht-3
			style : 0x2000
			Data : $aLog[$compteBis*$NbLignes-1]
			Resize : 2+32+512

Fenêtre Modifier :
	Type : Fenêtre
	titre1 : @ScriptName
	largeur : 200
	hauteur : $HLigne*12
	parentée : $fenBase

	Phrase Surnom :
		Type : Label
		titre1 : "Veuillez entrer un"&@CRLF&" pseudonyme :"
		posx : 0
		posy : 0

	Phrase Clef :
		Type : Label
		titre1 : @CRLF&"Clef de cryptage :"
		posx : 120
		posy : 0

	Phrase NDC :
		Type : Label
		titre1 : "Veuillez entrer le nom de compte Dofus :"
		posx : 0
		posy : $HLigne*4

	Phrase MDP :
		Type : Label
		titre1 : "Veuillez entrer le mot de pass associé :"
		posx : 0
		posy : $HLigne*7

	Surnom :
		Type : Input
		titre1 : $aLog[$compteBis]
		posx : 2
		posy : $Hligne*2
		largeur : 125

	Clef :
		Type : Input
		titre1 : ""
		posx : 149
		posy : $Hligne*2
		largeur : 50

	NDC :
		Type : Input
		titre1 : ""
		posx : 2
		posy : $Hligne*5
		largeur : 196

	MDP :
		Type : Input
		titre1 : ""
		posx : 2
		posy : $Hligne*8
		largeur : 196

	Valider :
		Type : Bouton
		titre1 : "Valider"
		posx : 2
		posy : $Hligne*10

	Annuler :
		Type : Bouton
		titre1 : "Annuler"
		posx : 100
		posy : $Hligne*10

Fenêtre de raccourcis :
	Type : Fenêtre
	titre1 : @ScriptName
	largeur : 170
	hauteur : 4*$Ht+$Hligne
	parentée : $fenBase

	Script :
		Type : Label
		titre1 : "Sélectionnez le script :"
		posx : 0
		posy : 0

	Scriptpos :
		Type : Input
		titre1 : @ScriptFullPath
		titre2 : $r[0]
		posx : 5
		posy : $Hligne
		largeur : 100

	Parcoure Script :
		Type : Bouton
		titre1 : "Parcourir"
		posx : 110
		posy : $Hligne

	Log :
		Type : Label
		titre1 : "Sélectionnez le log :"
		posx : 0
		posy : $Ht+$Hligne

	Logpos :
		Type : Input
		titre1 : $logChemin
		titre2 : StringMid($r[2],3,StringInStr($r[2],'"',2,2)-3)
		posx : 5
		posy : $Ht+2*$Hligne
		largeur : 100

	Parcoure log :
		Type : Bouton
		titre1 : "Parcourir"
		posx : 110
		posy : $Ht+2*$Hligne

	Comptes :
		Type : Label
		titre1 : "Entrez les n° des comptes :"
		posx : 0
		posy : 2*$Ht+2*$Hligne

	Comptespos :
		Type : Input
		titre1 : $compte
		titre2 : StringMid($r[2],StringInStr($r[2],'"',2,2)+2)
		posx : 5
		posy : 2*$Ht+3*$Hligne
		largeur : 100

	Valide :
		Type : Bouton
		titre1 : "Valider"
		posx : 110
		posy : 2*$Ht+3*$Hligne

Messages floodesques :
	Type : 5
	titre1 : "(\__/)" & @CRLF & "( ' . ' )" & @CRLF & '(")_(")'
	titre2 : @CRLF & "Vous pouvez aussi aller jouer dehors," & @CRLF & "avec les papillons, les fleurs et les oiseaux."
	titre3 : ""
	titre4 : @CRLF & "Ou patientez 2 secondes," & @CRLF & "que la fenêtre se ferme d'elle-même."
	titre5 : @CRLF & "La Vie est comme cette boîte de dialogue :" & @CRLF & "C'est quand elle se ferme qu'on arrive à l'essentiel."
C'est pas très clair, c'est pas très facile à comprendre, mais c'est un grand pas vers le début !
Une pensée particulière aux lignes de style titre2 : StringMid($r[2],3,StringInStr($r[2],'"',2,2)-3), j'en souffre d'avance pour les rendre simples à modifier ! ^^

Mais c'est en bonne voie.
Et voici le manuel associé :
Code:
Fenêtre :
	Type : Fenêtre
	titre1 : 
	titrex :
	largeur : 
	hauteur : 
	posx : 
	posy : 
	style : 
	étendu : 
	parentée : 
	Background : 
	Cursor : 
	Police :
		taille : 
		largeur : 
		attribus : 
		nom : 
	Icône :
		fichier : 
		n° de l'icône : 
	Contrôles :
		Couleur : 
		Background : 
Contrôle :
	Type : 
	titre1 : 
	titrex : 
	posx : 
	posy : 
	largeur : 
	hauteur : 
	style : 
	étendu : 
	Data : 
	Resize : 
	État : 
Menu :
	Type : 
	titre1 : 
	titrex :
	Relation : 
	Positionnement : 
	État : 
Flood :
	Type : Nombre de messages
	titre1 : 
	titrex :
Si vous souhaitez par exemple créer un bouton "truc" à un certain endroit, (version à la main, là) :
Code:
Mon bouton de contrôle :
	Type : Bouton
	titre1 : "truc"
	titrex : 
	posx : Iciii
	posy : Lààà
	largeur : beaucoup
	hauteur : grand
	style : pré sélectionné+plat+texte centré
	étendu : transparent+larges bords
	Data : 
	Resize : collé au bord gauche+statique vers le haut
	État : disponible
Le petit soucis, c'est effectivement que c'est long, qu'il faut penser à tout, que c'est pas pratique... et donc ma tâche en ce moment, c'est de créer l'éditeur de skins, pour vous permettre de modifier tout ce que vous voudrez, exactement comme vous le voulez !

Et je compte ajouter quelques options sympas de graphisme, comme une petite icône pour le Client de Dofus, histoire de différencier chaque compte en un clin d'oeil. (Comme-ça, le soucis du nom "Dofus -..." quand il y a trop de fenêtres ouvertes à la fois sera réglé !)

Ha et sinon, en me réveillant ce matin, j'ai réglé la suppression d'une entrée dans la liste principale qui faisait bugguer la multico.

Récapitulatif :
-> Bug (de graphisme) de suppression d'une ligne de compte avec la multico réglé
-> Modification de juste le mot de pass ou juste un nom de compte associé à un surnom activé (Pensez à utiliser la même clef. Y'a pas de vérification, mais si ce n'est pas la bonne, le résultat sera incohérent !)
-> Activation du bouton "Fermer le script après la connexion" automatiquement activé en cas de lancement par raccourcis
-> Mise en route du système de skins (encore en préparation)

Tout-ça, pour la v-1_10 qui ne devrait plus tarder !

Et après :
Comme je m'arrête rarement à ce que je suis en-train de faire, je prévois plusieurs travaux ensuite : la connexion simultanée (voir quelques pages avant pour l'explication détaillée), le grand ménage des variables du script pour le rendre plus propre, plus clair et mieux lisible.
Et je prépare un script annexe (sans rapport direct avec le DofusLog), pour passer d'une fenêtre à une autre avec un raccourcis particulier.
Pour développer vite-fait : avec "alt+&" j'active la fenêtre 1, "alt+é" pour la 2, etc.
Permet de passer rapidement d'une fenêtre à une autre sans être dépendante du "alt+tab" et de son ordre de sélection parfois douteux ! :]
(Oui, inutile de le demander : les raccourcis seraient paramétrables. )

Dofusément,

Za.
Félicitation pour le boulot déjà effectué, j'utilise ton script plusieurs fois par jours et c'est très plaisant.

Dès mon retour à la maison, je m'empresse de tester les quelques options poposées, même si le skin de la fenêtre est pour moi accessoire.

Je privilégierai plus l'aspect en jeu, la dénomination des fenêtres était déjà un plus indéniable, si'l'on pouvait avoir des raccourcis paramétrables de choix de fenêtre, ce serait un plus.

Si je puis donner une idée, en terme de raccourci, j'utilisais l'éternel AltTab. avec autant de tabulations que nécessaire.

Et bien plutôt que d'opter pour un raccourci par fenêtre pourquoi ne pas proposer une tabulation automatique ? 3 fois s 3 fenêtres, 4 fois si 4 fenêtres avec la possibilité de choisir l'ordre des fenêtre suivant l'init ?
Hey, pas trop vite, hein !
La release n'est pas encore disponible (pour vous, huhu. Y'a quand-même un avantage à programmer soi-même ses trucs !), je finis ça dans l'après-midi/soirée.

Le problème du "Alt-Tab" un certain nombre de fois, c'est que c'est le bazar si entre 2 fenêtres tu as ouvert un fichier, un dossier, exécuté un programme...
Plus précisément, chaque processus (fenêtre, programme, fichier ouvert..) possède un numéro unique+un titre.
Et en faisant la simple liste de ces titres, avec une petite commande (WinActivate(Fenêtre)) associée à un raccourcis, c'est finalement plus simple et plus sûr !

Pour réguler les fenêtres en fonction de l'ordre d'initiative, je ne pense pas pouvoir le faire de manière automatique via un script.
Comparer les valeurs d'initiative des personnages nécessite d'accéder à cette valeur ! (Ca semble évident, et pourtant..)
Or, Ankama ne met pas à disposition ce genre d'informations.
En revanche, permettre de réorganiser vos fenêtres/raccourcis vous-mêmes à travers un script, aucun soucis !

Allez, je finis ce que j'ai à faire d'abord. *y retourne*

Et puisque Ganjalo, il rox, il a aussi parlé de Taskix, que je ne connaissais pas (Lien vers la discussion.), qui permet de réorganiser ses fenêtres dans la barre des tâches à volonté.

Za.
Sympa comme soft, mais personne n'est motivé pour un créer un qui tourne sous Mac ?

P'tain, on va pas laisser ces sous-utilisateurs de windows nous griller avec leur OS en papier craft ! (Je plaisante pour les sous-utilisateurs mais pas pour l'OS en papier craft x')) Gloire a la pomme ! 
Je reviens ce soir, bonne journée ! ^^

Bonjour à tous !
Voilà, la version 1_10 en préparation avec son jouli module de skins est (presque) prête !

Par-contre, pour alléger votre attente, je vous propose de voir la version Bêta, qui n'est pas du tout finie.

Version Bêta2 :
-> Seul l'auto-chargement d'un skin nommé "SkinDB.txt" (SkinDeBase) présent dans le répertoire du script est implémenté
-> Il est possible de modifier manuellement le skin, un module à venir permettra de le faire de façon "simple"

DofusLog-v1_10 Bêta 2 (24/03/2009)
Fichier de skin : SkinDB.txt - 9.76 kB
Version script : DofusLog-v1_10Bêta2.au3 - 31.55 kB
Version Source :
Code:
;Dernières modif' : ;$a = 3, $b=10, Assign("a",Execute("$b")) -> $a = 10
;Transformer en OnEvent tous les GetMsg.
;des boutons pour afficher/cacher les caractères des mots de pass
;un bouton pour mettre en plein écran la fenêtre Dofus (en préparation)
#include <GUIConstants.au3>	;Nécessaire surtout pour le $GUI_EVENT_CLOSE
#include <String.au3>	;Pour l'encryptage
;~ #include <File.au3>
;~ #include <Array.au3>

Global	$fichier, $prgChemin, $prgNom, $FenBase, $Label, $CFini, $fin, $Lancer, $Lance = 0, $Multico, $multi = 0, $Modifier, $Nouveau, $Supprimer, $Ajoute, $Retire, $Haut, $Bas, $Boutons, $Options, $OLog, $LLancer, $LModifier, $LNouveau, $LSupprimer,  $Fichiers, $FNouv, $FCharge, $FQuit, $ORaccourcis, $RNouveau, $RModifier, $RCharge, $RSupprime, $OSkin, $SCharger, $SNouveau, $SModifier, $SSauvegarder, $Aide, $ATuto, $aLog, $coListe, $CcoListe, $Radio, $Skin
Global	$NbLignes = 2	;Nombre de lignes utilisées par entrée dans le fichier de Log
Global	$logChemin = @ScriptDir & "\log.txt"
Global	$compte = 1, $compteBis = 0;, $compteTer = 0
Dim	$coListe[1]
If	$CmdLine[0] > 0	Then	$logChemin = $CmdLine[1]
If	$CmdLine[0] > 1	Then
	$coListe = StringSplit ($CmdLine[2], ",")
	For	$n = 0	To	UBound ($coListe) - 2
		$coListe[$n] = $coListe[$n+1]
	Next
	ReDim	$coListe[UBound ($coListe) - 1]
	$Lance = 1
	$fin = $GUI_CHECKED	;Pas obligatoire, en fait, mais préférable, finalement.
EndIf
Global	$Separ = 4	;Séparateur, hauteur en pixels entre deux lignes
Global	$Hligne = 13	;hauteur présumée par ligne (13 pixels de haut, voire 14)
Global	$Ht = $Separ + 2 * $Hligne
Global	$msg
Dim	$aLog[3]
Dim	$Ccoliste[UBound ($coListe)]
_FileReadToArray2 ("SkinDB.txt", $Skin)

Charge ()

While	1
	$msg = GUIGetMsg ()
	Switch	$msg
		Case	0	And	$Lance <> 1
			ContinueLoop
		Case	$GUI_EVENT_CLOSE, $FQuit
			GUIDelete ($fenBase)
			Exit
		Case	$Radio[1]	To	$Radio[UBound ($Radio) - 1]
			$compte = FRadio ($msg, $compte)
		Case	$Lancer, $LLancer, $Lance = 1
			Lance ()
		Case	$Multico
			FMultico ()
		Case	$Modifier, $LModifier
			FModifier ()
		Case	$Nouveau, $LNouveau
			FNouveau ()
		Case	$Supprimer, $LSupprimer
			FSupprimer ()
		Case	$CFini	;Bouton fermer après la connec
			$fin = GUICtrlRead ($CFini)
		Case	$Ajoute
			MAjoute ()
		Case	$Retire
			MRetire ()
		Case	$Haut
			MHaut ()
		Case	$Bas
			MBas ()
		Case	$RNouveau
			RModif ()
		Case	$RCharge
			RCharge ()
		Case	$RModifier
			RModif (1)
		Case	$RSupprime
			RSuppre ()
		Case	$FNouv, $FCharge
			GUIDelete ($fenBase)
			Charge (1)
		Case	$ATuto
			MsgBox(80,@ScriptName,"Aucun tutoriel pour le moment." & @CRLF & "N'hésitez pas à réagir sur le forum" & @CRLF& "www.JeuxonLine.info !")
	EndSwitch
WEnd
;==============================Fonctions totalement créées par Za====================================
Func	Charge ($nouv = 0)
	If	Not	FileExists ($logChemin)	Or	$nouv = 1	Then
		TrayTip (@ScriptName, "Veuillez sélectionner un fichier texte.",0)
		$fichier = FileOpenDialog (@ScriptName & " - Sélectionnez ou créez un fichier contenant vos logs", $logChemin, "Text files (*.txt)|All files (*.*)", 8, "Log.txt")
		If	$fichier = ""	Then	Exit	;Ok, c'est violent, mais bon.. ^^
		TrayTip (@ScriptName, "Enregistrement de la place du Log en cours", 1, 16)
		_FileWriteToLine2 (@ScriptFullPath, 12,'Global	$logChemin = "' & $fichier & '"', 1)
		TrayTip ("", "", 0)
	Else
		$fichier = $logChemin
	EndIf
	$existe = _FileReadToArray2 ($fichier, $aLog)

	;$prgChemin et $prgNom n'ont rien à faire ici, normalement. Sauf à associer les logs avec une application.
	$prgChemin = RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\Ankama\Dofus", "Path") & "\"
	$prgNom = "Dofus.exe"
	If	Not	FileExists ($prgChemin & $prgNom)	Then
		If	Not	FileExists ($prgChemin & "Dofus_client.exe")	Then
			$prgNom = FileOpenDialog (@ScriptName & " - Sélectionnez votre lanceur de jeu Dofus", $prgChemin, "(*.exe; *.html)|Tous (*.*)", 1, "Dofus")
		Else
			$prgNom = "Dofus_client.exe"
		EndIf
	EndIf

	If	Not	$existe	Then
		Modifier (1, $fichier)
	EndIf

	_FileReadToArray2 ($fichier, $aLog)
	Dim	$Radio[(UBound ($aLog) + 1) / $NbLignes]
	
	Fenetre ()
EndFunc
Func	Fenetre ($GUI = "FenBase") ;String
	Global	$tFen = ((UBound ($aLog) - 1) / $NbLignes)
	Global	$lFen = (200 + 200 * ($multi = 1))
	If	$GUI = "FenBase"	Then	GUIDelete ($FenBase)
	
	;Appeler la fonction skin : Skinappel($string)
	For $l = 1 to UBound ($Skin) - 1
		If	$Skin[$l] = $GUI	Then	ExitLoop
	Next
	For $g = $l To 	UBound ($Skin) - 1
;~ 		_ArrayDisplay($Skin,$g)
		If	(StringLeft ($Skin[$g], 3) = "Fen")	And	($g <> $l)	Then	ExitLoop
		If	(StringLeft ($Skin[$g], 3) = "Fen")	And	($g = $l)	Then
			$t = $Skin[$g]
		Else
			$t = StringRight ($Skin[$g], StringLen ($Skin[$g]) - StringInStr ($Skin[$g], "	", 2, -1))
		EndIf
		If	Not (StringInStr ($Skin[$g], ":"))	And	($Skin[$g] <> "")	Then
;~ 			MsgBox(80,"",$g&"."&$Skin[$g]&"."&Skinappel ($Skin[$g]))
			Switch	$t
				Case "Multico"
					If	UBound ($aLog) / $NbLignes > 2	Then
						Assign (StringRight ($Skin[$g], StringLen ($Skin[$g]) - StringInStr ($Skin[$g], "	", 2, -1)), Skinappel ($Skin[$g]))
						GUICtrlSetResizing ($Multico, 8 + 768)
						GUICtrlSetState ($Multico, $multi)
					EndIf
				Case	"Ajoute"
					ContinueCase
				Case	"Retire"
					ContinueCase
				Case	"Haut"
					ContinueCase
				Case	"Bas"
					ContinueCase
				Case	"ListeMulti"
					If	$multi = 1	And	$Lance <> 1	Then
;~ 						MsgBox(80,"","."&$Skin[$g]&".")
						If	$t = "ListeMulti"	Then
							If	$coListe[0] = ""	Then	$coListe[0] = $compte
;~ 							_ArrayDisplay($coListe,"$coListe")
							$compteBis = 0
							While	$compteBis	< UBound ($coListe)
;~ 								MsgBox(80,"",$aLog[$coListe[$compteBis] * $NbLignes - 1])
								$CcoListe[$compteBis] = Skinappel ($Skin[$g])
;~ 								$CcoListe[$compteBis] = GUICtrlCreateCheckbox ($aLog[$coListe[$compteBis] * $NbLignes - 1] & "...", 255, 27 + $compteBis * $Ht)
								$compteBis += 1
							WEnd
						Else
							Assign ($t, Skinappel ($Skin[$g]))
						EndIf
					EndIf
				Case	"Surnoms"
					$compteBis = 1
					While	$compteBis < (UBound ($aLog)) / $NbLignes
						$Radio[$compteBis] = Skinappel ($Skin[$g])
;~ 						MsgBox(80,"",$compteBis&", "&27+($compteBis-1)*$Ht&", "&Execute("27+($compteBis-1)*$Ht"))
						GUICtrlSetData ($Radio[$compteBis], $aLog[$compteBis * $NbLignes - 1])
;~				 		GUICtrlSetLimit ($Radio[$compteBis], 12)	;pour limiter la largeur des caractères. (j'ai pas trouvé comment faire.)
						GUICtrlSetResizing ($Radio[$compteBis], 2 + 32 + 512)
						$compteBis += 1
					WEnd
					GUICtrlSetState ($Radio[$compte], 1 + 256)
					GUICtrlSetPos ($Radio[$compte], 15, 30 + ($compte - 1) * $Ht)
					$compteBis = $compte
				Case	Else ;Dans tous les cas "normaux"
					Assign ($t, Skinappel ($Skin[$g]))
			EndSwitch
;~ 			MsgBox(80,"","$"&$t&"="&Execute("$"&$t)&".")
		EndIf
;~ 		TrayTip(@scriptname,$g,0)
;~ 		Sleep(50)
	Next

	GUISetState ()
	If	$GUI = "FenBase"	Then	DesAct ()
EndFunc
Func	Skinappel ($String)
	Local	$ligne = 1, $ligneBis
	Local	$param
	Dim	$SkinBis[9]
	
	Do
		$ligne += 1
	Until	$Skin[$ligne - 1] = $String
	$marqueur = StringInStr ($Skin[$ligne], "	", 2, 1)
	;$Skin[$ligne] épuré : StringRight ($Skin[$ligne], StringLen($Skin[$ligne]) - StringInStr ($Skin[$ligne], "	", 2, -1))
	;Nomparamètre : StringLeft (StringRight ($Skin[$ligne], StringLen($Skin[$ligne]) - StringInStr ($Skin[$ligne], "	", 2, -1)), StringInStr (StringRight ($Skin[$ligne], StringLen($Skin[$ligne]) - StringInStr ($Skin[$ligne], "	", 2, -1)), ":"))
	;Paramètre : StringRight (StringRight ($Skin[$ligne], StringLen($Skin[$ligne]) - StringInStr ($Skin[$ligne], "	", 2, -1)), StringLen (StringRight ($Skin[$ligne], StringLen($Skin[$ligne]) - StringInStr ($Skin[$ligne], "	", 2, -1))) - StringInStr (StringRight ($Skin[$ligne], StringLen($Skin[$ligne]) - StringInStr ($Skin[$ligne], "	", 2, -1)), ":"))
	$ligneBis = $ligne
	While	StringInStr ($Skin[$ligneBis], "	", 2, 1) = $marqueur
		$param = StringRight (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], "	", 2, -1)), StringLen (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], "	", 2, -1))) - StringInStr (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], "	", 2, -1)), ":") - 1)
;~ 		MsgBox(80,"","."&$param&"."&Execute($param)&".")
		If	(Execute ($param) <> '')	Or	($param = '""')	Then	$param = Execute ($param)
		Switch	StringLeft (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], "	", 2, -1)), StringInStr (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], "	", 2, -1)), ":"))
			Case	"Type :"
				$SkinBis[0] = $param ;commande choisie
			Case	"contenu1 :"
				If	$param = "$aLog[$compteBis]"	Then
					$SkinBis[1] = ""
				Else
					$SkinBis[1] = $param ;valeur affectée
				EndIf
;~ 			Case	"contenu2 :"
;~ 				
			Case	"largeur :"
				If	$SkinBis[0] = "Fenêtre"	Then
					$SkinBis[2] = $param
				Else
					$SkinBis[4] = $param
				EndIf
			Case	"hauteur :"
				If	$SkinBis[0] = "Fenêtre"	Then
					$SkinBis[3] = $param
				Else
					$SkinBis[5] = $param
				EndIf
			Case	"posx :"
				If	$SkinBis[0] = "Fenêtre"	Then
					$SkinBis[4] = $param
				Else
					$SkinBis[2] = $param
				EndIf
			Case	"posy :"
				If	$SkinBis[0] = "Fenêtre"	Then
					$SkinBis[5] = $param
				Else
					$SkinBis[3] = $param
				EndIf
			Case	"style :"
				If $SkinBis[5] = ""	Then
					If	$SkinBis[4] = ""	Then	$SkinBis[4] = -1
					$SkinBis[5] = -1
				EndIf
				$SkinBis[6] = $param
			Case	"étendu :"
				$SkinBis[7] = $param
			Case	"parenté :"
				If	$SkinBis[0] = "Groupe"	Then
					$SkinBis[1] = $param
				ElseIf	($SkinBis[0] = "Menu")	Or	($SkinBis[0] = "S-Menu")	Then
					$SkinBis[2] = $param
				Else
					$SkinBis[8] = $param
				EndIf
			Case	"Positionnement :"
				$SkinBis[3] = $param
;~ 			Case	"Menuradio :"
;~ 				$SkinBis[4] = $param
		EndSwitch
;~ 		Traytip("",$ligneBis,0)
		$ligneBis += 1
	WEnd
;~ 	_ArrayDisplay($SkinBis,"$SkinBis ("&$String&")")
	GUISetState ()
	Return Skin ($SkinBis)
EndFunc
Func	Skin ($Array)
	Switch	$Array[0]
		Case	"Curfen"
			Return	GUISetCursor ($Array[1], $Array[2], $Array[3])
		Case	"Fenêtre"
			Return	GUICreate ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Fond-F"
			Return	GUISetBkColor ($Array[1], $Array[2])
		Case	"Groupe"
			Return	GUIStartGroup ($Array[1])
		Case	"Ic-F"
			Return	GUISetIcon ($Array[1], $Array[2], $Array[3])
		Case	"Police-Fen"
			Return	GUISetFont ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5])
		Case	"OnEvent"
			Return	GUISetOnEvent ($Array[1], $Array[2], $Array[3])
		Case	"State"
			Return	GUISetState ($Array[1], $Array[2])
		Case	"Stylfaen"
			Return	GUISetStyle ($Array[1], $Array[2], $Array[3])
		Case	"Avi"
			Return	GUICtrlCreateAvi ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7], $Array[8])
		Case	"Bouton"
			Return	GUICtrlCreateButton ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Calendrier"
			Return	GUICtrlCreateMonthCal ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Checkbox"
			Return	GUICtrlCreateCheckbox ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Combo"
			Return	GUICtrlCreateCombo ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Dat'action"
			Return	GUICtrlCreateDate ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Editeur"
			Return	GUICtrlCreateEdit ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Graphisme"
			Return	GUICtrlCreateGraphic ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5])
		Case	"Icône"
			Return	GUICtrlCreateIcon ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7], $Array[8])
		Case	"Image"
			Return	GUICtrlCreatePic ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Input"
			Return	GUICtrlCreateInput ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Label"
			Return	GUICtrlCreateLabel ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Liste"
			Return	GUICtrlCreateList ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Menu"
			Return	GUICtrlCreateMenu ($Array[1], $Array[2], $Array[3])
		Case	"MiniMenu"
			Return	GUICtrlCreateContextMenu ($Array[1])
		Case	"Radio"
			Return	GUICtrlCreateRadio ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"S-Menu"
			Return	GUICtrlCreateMenuItem (String ($Array[1]), $Array[2], $Array[3]);, $Array[4])
		Case	"Coul"
			Return	GUICtrlSetColor ($Array[1], $Array[2])
		Case	"Cur"
			Return	GUICtrlSetCursor ($Array[1], $Array[2])
		Case	"D-Coul"
			Return	GUICtrlSetDefColor ($Array[1], $Array[2])
		Case	"D-Fond-C"
			Return	GUICtrlSetDefBkColor ($Array[1], $Array[2])
		Case	"Data"
			Return	GUICtrlSetData ($Array[1], $Array[2])
;~ 		Case	"État"
;~ 			Return	GUICtrlSetState ($Array[1], $Array[2])
		Case	"Event"
			Return	GUICtrlSetOnEvent ($Array[1], $Array[2])
		Case	"Fond-C"
			Return	GUICtrlSetBkColor ($Array[1], $Array[2])
		Case	"Graphip'tit"
			Return	GUICtrlSetGraphic ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7], $Array[8])
		Case	"Im-C"
			Return	GUICtrlSetImage ($Array[1], $Array[2], $Array[3], $Array[4])
		Case	"Police-C"
			Return	GUICtrlSetFont ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5])
		Case	"Pos"
			Return	GUICtrlSetPos ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5])
		Case	"Resize"
			Return	GUICtrlSetResizing ($Array[1], $Array[2])
		Case	"Restyle"
			Return	GUICtrlSetStyle ($Array[1], $Array[2], $Array[3])
		Case	"Titruc"
			Return	GUICtrlSetTip ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5])
	EndSwitch
EndFunc
Func	DesAct ($DesActive = 0)	;Réactive les boutons par défaut
	If	$DesActive = 1	Then
		GUICtrlSetState ($Lancer, $GUI_DISABLE)
		GUICtrlSetState ($Modifier, $GUI_DISABLE)
		GUICtrlSetState ($Nouveau, $GUI_DISABLE)
		GUICtrlSetState ($Supprimer, $GUI_DISABLE)
		GUICtrlSetState ($Options, $GUI_DISABLE)
		GUICtrlSetState ($Fichiers, $GUI_DISABLE)
		GUICtrlSetState ($Aide, $GUI_DISABLE)
	Else
		GUICtrlSetState ($Lancer, $GUI_ENABLE)
		GUICtrlSetState ($Modifier, $GUI_ENABLE)
		GUICtrlSetState ($Nouveau, $GUI_ENABLE)
		GUICtrlSetState ($Supprimer, $GUI_ENABLE)
		GUICtrlSetState ($Options, $GUI_ENABLE)
		GUICtrlSetState ($Fichiers, $GUI_ENABLE)
		GUICtrlSetState ($Aide, $GUI_ENABLE)
	EndIf
;~ 	If	(UBound ($aLog) - 1) / $NbLignes < 2	Then
;~ 		GUICtrlSetState ($Supprimer, $GUI_DISABLE)
;~ 		GUICtrlSetState ($LSupprimer, $GUI_DISABLE)
;~ 	EndIf
;~ 	GUICtrlSetState ($CFini, $GUI_ENABLE)
EndFunc
Func	FSupprimer ()
	If	MsgBox (0x51, @ScriptName & " - Suppression", "Souhaitez-vous vraiment détruire cette entrée ?") = 2	Then	Return
	DesAct (1)
	TrayTip (@ScriptName, "Effacement en cours...", 0, 16)
	$ligne = $compte * $NbLignes + 1
	MRetire ($ligne)
	While	$ligne < UBound ($aLog)
		$aLog[$ligne - $NbLignes] = $aLog[$ligne]
		$ligne += 1
	WEnd
	ReDim	$aLog[UBound ($aLog) - $NbLignes]
	ReDim	$Radio[UBound ($Radio) - 1]
	If	$compte > (UBound ($aLog) - 1) / $NbLignes	Then	$compte -= 1
	_FileWriteFromArray2 ($fichier, $aLog, 1, UBound ($aLog) - 1)
	TrayTip ("", "", 0)
	
	Fenetre ()
EndFunc
Func	FModifier ()
	DesAct (1)
	If	Modifier ($compte, $fichier)	Then
		Fenetre ()
	Else
		Desact ()
	EndIf
EndFunc
Func	FNouveau ()
	DesAct (1)
	ReDim	$aLog[UBound ($aLog) + $NbLignes]
	ReDim	$Radio[UBound ($Radio) + 1]
	If	Modifier (((UBound ($aLog) - 1) / $NbLignes) , $fichier)	Then
		Fenetre ()
	Else
		ReDim	$aLog[UBound ($aLog) - $NbLignes]
		ReDim	$Radio[UBound ($Radio) - 1]
	EndIf
	DesAct ()
EndFunc
Func	Modifier ($compteMod, $fich)
	$compteBis = $NbLignes * ($compteMod - 1) + 1
	Global	$FenMod, $LabelSurnom, $LabelClef, $LabelNDC, $LabelMDP, $InputPseudo, $InputClef, $InputNDC, $InputMDP, $BValide, $BAnnule
	Fenetre ("FenMod")
	Local	$Encrypt = StringSplit ($aLog[$compteBis + 1], "{TAB}")
	
	GUISetState ()
	
	While	1
		$Mmsg = GUIGetMsg ()
		Switch	$Mmsg
			Case	0
				ContinueLoop
			Case	$GUI_EVENT_CLOSE
				GUIDelete ($FenMod)
				Return 0
			Case	$BAnnule
				GUIDelete ($FenMod)
				Return 0
			Case	$BValide
				If	MsgBox (0x51, @ScriptName & " - Modifications", "Attention, vous vous apprêtez à" & @CRLF & "modifier définitivement ces données." & @CRLF & "Êtes-vous sûr ?") = 2	Then	ExitLoop
				If	GUICtrlRead ($InputPseudo) <> ""	Then
					TrayTip (@ScriptName, "Écriture en cours...", 0, 16)
					$aLog[$compteBis] = GUICtrlRead ($InputPseudo, 0)
					_FileWriteToLine2 ($fichier, $compteBis, $aLog[$compteBis], 1)
					If	GUICtrlRead ($InputNDC) <> ""	Then
						If	GUICtrlRead ($InputClef) = "" 	Then
							$Encrypt[1] = GUICtrlRead ($InputNDC)
						Else
							$Encrypt[1] = _StringEncrypt (1, GUICtrlRead ($InputNDC), GUICtrlRead ($InputClef))
						EndIf
					EndIf
					If	GUICtrlRead ($InputMDP) <> ""	Then
						If	GUICtrlRead ($InputClef) = "" 	Then
							$Encrypt[UBound ($Encrypt) - 1] = GUICtrlRead ($InputMDP)
						Else
							$Encrypt[UBound ($Encrypt) - 1] = _StringEncrypt (1, GUICtrlRead ($InputMDP), GUICtrlRead ($InputClef))
						EndIf
					EndIf
					$Encrypt = $Encrypt[1] & "{TAB}" & $Encrypt[UBound ($Encrypt) - 1]
					If	$Encrypt <> $aLog[$compteBis + 1] Then
						$aLog[$compteBis + 1] = $Encrypt
						_FileWriteToLine2 ($fichier, $compteBis + 1, $aLog[$compteBis + 1], 1)
					EndIf
					TrayTip ("", "", 0)
				EndIf
				GUIDelete ($FenMod)
				GUIDelete ($FenBase)
				Return 1
		EndSwitch
	WEnd
	GUIDelete ($FenMod)
EndFunc
Func	FRadio ($mess, $compteBis)
	If	$mess <> $Radio[$compteBis]	Then
		GUICtrlSetPos ($Radio[$compteBis], 5, 27 + (($compteBis - 1) * $Ht))
		While	$mess <> $Radio[$compteBis]
			$compteBis += 1
			If	$compteBis > (UBound ($Radio) - 1)	Then
				$compteBis = 1
			EndIf
		WEnd
		GUICtrlSetPos ($Radio[$compteBis], 15, 30 + (($compteBis - 1) * $Ht))
	Else
		If	$multi = 1	Then
			MAjoute ()
		Else
			FLancer ($compteBis)
			If	$fin = $GUI_CHECKED	Then	Exit
		EndIf
	EndIf
	Return $compteBis
EndFunc
Func	FMultico ()
	$multi = GUICtrlRead ($Multico)
	If	$coListe[0] = ""	Then	$coListe[0] = $compte
	Fenetre ()
EndFunc
Func	MAjoute ()
	Local	$n
	For	$n = 0	To	UBound ($coListe) - 1
		If	$coListe[$n] = $compte	Then	ContinueLoop	2
	Next
	ReDim	$coListe[UBound ($coListe) + 1]
	ReDim	$CcoListe[UBound ($CcoListe) + 1]
	$coListe[UBound ($coListe) - 1] = $compte
	$CcoListe[UBound ($CcoListe) - 1] = GUICtrlCreateCheckbox ($aLog[$coListe[UBound ($CcoListe) - 1]* $NbLignes - 1], 255, 27 + (UBound ($CcoListe) - 1) * $Ht)
	GUICtrlSetPos ($Retire, 275, 27 + UBound ($coListe) * $Ht)
	GUICtrlSetPos ($Haut, 205, $Ht / 2 + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
	GUICtrlSetPos ($Bas, 205, ($Ht - 3) + $Ht / 2 + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
EndFunc
Func	MRetire ($suppr = -1)
	Local	$n = 0, $q
	While	$n < UBound ($CcoListe)
		If	$suppr = -1	Then
			If	GUICtrlRead ($CcoListe[$n]) = $GUI_CHECKED	And	$suppr = -1	Then
				$q = $n
				While	$q < UBound ($CcoListe) - 1
					$coListe[$q] = $coListe[$q + 1]
					GUICtrlSetState ($CcoListe[$q], GUICtrlRead ($CcoListe[$q + 1]))
					GUICtrlSetData ($CcoListe[$q], GUICtrlRead ($CcoListe[$q + 1], 1))
					$q += 1
				WEnd
				GUICtrlDelete ($CcoListe[UBound ($CcoListe) - 1])
				If	UBound	($coListe) > 1	Then
					ReDim	$coListe[UBound ($coListe) - 1]
					ReDim	$CcoListe[UBound ($CcoListe) - 1]
					GUICtrlSetPos ($Retire, 275, 27 + UBound ($coListe) * $Ht)
					GUICtrlSetPos ($Haut, 205, $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
					GUICtrlSetPos ($Bas, 205, ($Ht - 3) + $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
					$n -= 1
				Else
					$coListe[0] = ""
					$multi = 0
					Fenetre ()
				EndIf
			EndIf
		Else
			If	GUICtrlRead ($CcoListe[$n], 1) = $aLog[$suppr - $NbLignes]	Then
				$q = $n
				While	$q < UBound ($CcoListe) - 1
					$coListe[$q] = $coListe[$q + 1]
					GUICtrlSetState ($CcoListe[$q], GUICtrlRead ($CcoListe[$q + 1]))
					GUICtrlSetData ($CcoListe[$q], GUICtrlRead ($CcoListe[$q + 1], 1))
					$q += 1
				WEnd
				GUICtrlDelete ($CcoListe[UBound ($CcoListe) - 1])
				If	UBound	($coListe) > 1	Then
					ReDim	$coListe[UBound ($coListe) - 1]
					ReDim	$CcoListe[UBound ($CcoListe) - 1]
					GUICtrlSetPos ($Retire, 275, 27 + UBound ($coListe) * $Ht)
					GUICtrlSetPos ($Haut, 205, $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
					GUICtrlSetPos ($Bas, 205, ($Ht - 3) + $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
					$n -= 1
				Else
					$coListe[0] = ""
					$multi = 0
					Fenetre ()
				EndIf
			EndIf
		EndIf
		$n += 1
	WEnd
EndFunc
Func	MHaut ()
	Local	$n = 1, $z, $y
	While	$n < UBound ($CcoListe)
		If	GUICtrlRead ($CcoListe[$n]) = $GUI_CHECKED	Then
			$z = GUICtrlRead ($CcoListe[$n])
			$y = GUICtrlRead ($CcoListe[$n], 1)
			GUICtrlDelete ($CcoListe[$n])
			$CcoListe[$n] = GUICtrlCreateCheckbox (GUICtrlRead ($CcoListe[$n - 1], 1), 255, 27 + $n * $Ht)
			GUICtrlSetState ($CcoListe[$n], GUICtrlRead ($CcoListe[$n - 1]))
			GUICtrlDelete ($CcoListe[$n - 1])
			$CcoListe[$n - 1] = GUICtrlCreateCheckbox ($y, 255, 27 + ($n - 1) * $Ht)
			GUICtrlSetState ($CcoListe[$n - 1], $z)
			$z = $coListe[$n]
			$coListe[$n] = $coListe[$n - 1]
			$coListe[$n - 1] = $z
		EndIf
		$n = $n + 1
	WEnd
EndFunc
Func	MBas ()
	Local	$n = UBound ($CcoListe) - 2, $z
	While	$n >= 0
		If	GUICtrlRead ($CcoListe[$n]) = $GUI_CHECKED	Then
			$z = GUICtrlRead ($CcoListe[$n])
			$y = GUICtrlRead ($CcoListe[$n], 1)
			GUICtrlDelete ($CcoListe[$n])
			$CcoListe[$n] = GUICtrlCreateCheckbox (GUICtrlRead ($CcoListe[$n + 1], 1), 255, 27 + $n * $Ht)
			GUICtrlSetState ($CcoListe[$n], GUICtrlRead ($CcoListe[$n + 1]))
			GUICtrlDelete ($CcoListe[$n + 1])
			$CcoListe[$n + 1] = GUICtrlCreateCheckbox ($y, 255, 27 + ($n + 1) * $Ht)
			GUICtrlSetState ($CcoListe[$n + 1], $z)
			$z = $coListe[$n]
			$coListe[$n] = $coListe[$n + 1]
			$coListe[$n + 1] = $z
		EndIf
		$n = $n - 1
	WEnd
EndFunc
Func	RModif ($mod = 0)
	Local	$n, $r
	Global	$fenRac, $LabelSansNom, $modRac = $mod, $IScript, $BSParc, $LabelSansNom2, $ILog, $BLParc, $LComptes, $LabelSansNom3, $IComptes, $BValide, $BAnnule
	Fenetre ("FenRac")
	#comments-start ;Il manque à travailler $mod = 0 / <> 0
	$fenRac = GUICreate (@ScriptName, 170, 4 * $Ht + $Hligne)
	$LabelSansNom = GUICtrlCreateLabel ("Sélectionnez le script :", 0, 0);, -1, 2 * $Hligne) ;Trouver un nom à ce label.. Ca fait tâche, là ^^'
	If	$mod = 0	Then
		$IScript = GUICtrlCreateInput (@ScriptFullPath, 5, $Hligne, 100);, -1, 2 * $Hligne)
		$BSParc = GUICtrlCreateButton ("Parcourir", 110, $Hligne);, -1, 2 * $Hligne)
		$LabelSansNom2 = GUICtrlCreateLabel ("Sélectionnez le log :", 0, $Ht + $Hligne);, -1, 2 * $Hligne);Idem que plus haut
		$ILog = GUICtrlCreateInput ($logChemin, 5, $Ht + 2 * $Hligne, 100);, -1, 2 * $Hligne)
		$BLParc = GUICtrlCreateButton ("Parcourir", 110, $Ht + 2 * $Hligne);, -1, 2 * $Hligne)
		$LComptes = GUICtrlCreateLabel ('Entrez les n° des comptes :', 0, 2 * $HT + 2 * $Hligne);, -1, 2 * $Hligne)
		$LabelSansNom3 = GUICtrlSetTip ($LComptes, "Entrez le n° des comptes dans la liste," & @CRLF & "séparés par une simple virgule sans espace.") ;Toujours à trouver un nom
		$IComptes = GUICtrlCreateInput ($compte, 5, 2 * $Ht + 3 * $Hligne, 100);, -1, 2 * $Hligne)
		$BValide = GUICtrlCreateButton ("Valider", 110, 2 * $Ht + 3 * $Hligne);, -1, 2 * $Hligne)
	Else
		$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
		If	$n = ""	Then	Return
		$r = FileGetShortcut ($n)
		$IScript = GUICtrlCreateInput ($r[0], 5, $Hligne, 100);, -1, 2 * $Hligne)
		$BSParc = GUICtrlCreateButton ("Parcourir", 110, $Hligne);, -1, 2 * $Hligne)
		GUICtrlCreateLabel ("Sélectionnez le log :", 0, $Ht + $Hligne);, -1, 2 * $Hligne)
		$ILog = GUICtrlCreateInput (StringMid ($r[2], 3, StringInStr ($r[2], '"', 2, 2) - 3), 5, $Ht + 2 * $Hligne, 100);, -1, 2 * $Hligne)
		$BLParc = GUICtrlCreateButton ("Parcourir", 110, $Ht + 2 * $Hligne);, -1, 2 * $Hligne)
		$LComptes = GUICtrlCreateLabel ('Entrez les n° des comptes :', 0, 2 * $HT + 2 * $Hligne);, -1, 2 * $Hligne)
		GUICtrlSetTip ($LComptes, "Entrez le n° des comptes dans la liste," & @CRLF & "séparés par une simple virgule sans espace.")
		$IComptes = GUICtrlCreateInput (StringMid ($r[2], StringInStr ($r[2], '"', 2, 2) + 2), 5, 2 * $Ht + 3 * $Hligne, 100);, -1, 2 * $Hligne)
		$BValide = GUICtrlCreateButton ("Valider", 110, 2 * $Ht + 3 * $Hligne);, -1, 2 * $Hligne)
	EndIf
	GUISetState ()
	#comments-end
	
	While	1
		$RMsg = GUIGetMsg ()
		Switch	$RMsg
			Case	0
				ContinueLoop
			Case	$BSParc
				$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre script :", @ScriptDir, "Scripts (*.au3;*.exe)|Tous (*.*)", 8, @ScriptName)
				If	$n <> ""	Then	GUICtrlSetData ($IScript, $n)
			Case	$BLParc
				$n = FileOpenDialog (@ScriptName & " - Sélectionnez le fichier contenant vos logs :", $logChemin, "Textes (*.txt)|Tous (*.*)", 8, "Log.txt")
				If	$n <> ""	Then	GUICtrlSetData ($ILog, $n)
			Case	$BValide
				$n = FileOpenDialog (@ScriptName & " - Choissez le nom et répertoire du raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
				If	$n = ''	Then	ContinueLoop
				If	StringInStr ($n, ".lnk") = 0	Then	$n &= ".lnk"
				FileCreateShortcut (GUICtrlRead ($IScript), $n, "", ' "' & GUICtrlRead ($ILog) & '" ' & GUICtrlRead ($IComptes))
				ContinueCase
			Case	$BAnnule
				ContinueCase
			Case	$GUI_EVENT_CLOSE
				GUIDelete ($fenRac)
				Return
		EndSwitch
	WEnd
EndFunc
Func	RCharge ()
	$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
	If	$n = ""	Then	Return
	$r = FileGetShortcut ($n)
	$logChemin = StringMid ($r[2], 3, StringInStr ($r[2], '"', 2, 2) - 3)
	$coListe = StringSplit (StringMid ($r[2], StringInStr ($r[2], '"', 2, 2) + 2), ",")
	For	$n = 0	To	UBound ($coListe) - 2
		$coListe[$n] = $coListe[$n+1]
	Next
	ReDim	$coListe[UBound ($coListe) - 1]
	$Lance = 1
	GUIDelete ($fenBase)
	Charge ()
	Return
EndFunc
Func	RSuppre ()
	$Racc = FileOpenDialog (@ScriptName & " - Sélectionnez votre raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName)
	If	$Racc <> ""	Then	FileDelete ($Racc)
EndFunc
Func	Lance ()
	If	$multi = 1	Or	$Lance = 1	Then
		For	$n = 0	To	UBound ($coListe) - 1
			If	$coListe[$n] <= ((UBound ($aLog) - 1) / $NbLignes) And	$coListe[$n] > 0	Then  FLancer ($coListe[$n])
		Next
		$Lance = 0
	Else
		FLancer ($compte)
	EndIf
	If	$fin = $GUI_CHECKED	Then	Exit
EndFunc
Func	FLancer ($compteBis = $compte)
	DesAct (1)
	$compteBis = ($compteBis - 1) * $NbLignes + 1
	If	StringInStr ($aLog[$compteBis + 1], "{TAB}") = 0	Then	Return	;vérif alakon, à faire pour la prochaine version ^^
	Local	$Clef = InputBox (@ScriptName & " - Code du compte " & $aLog[$compteBis], "Veuillez entrer la clef de " & $aLog[$compteBis]& " :", "", "°")
	If	@error = 1	Then
		DesAct ()
		Return
	EndIf
	Local	$NDCMDP = StringSplit ($aLog[$compteBis + 1], "{TAB}", 1)
	If	$Clef <> ""	Then
		$NDCMDP[1] = _StringEncrypt (0, $NDCMDP[1], $Clef)
		$NDCMDP[2] = _StringEncrypt (0, $NDCMDP[2], $Clef)
	EndIf
	If	MsgBox (0x51, @ScriptName, "Lancement de la fenêtre Dofus !" & @CRLF & "Cliquez sur Annuler pour fermer." & @CRLF & Message(), 2) <> 2	Then
		TrayTip (@Scriptname, "Lancement de la fenêtre Dofus.", 0)
		ShellExecute ($prgNom, "", $prgChemin)
		AutoItSetOption ("WinTitleMatchMode", 3)
		Do
			Sleep (200)
		Until	WinActive ("Dofus  ")	Or	WinActive ("Dofus - Opera")	Or	WinActive ("Dofus - Windows Internet Explorer")	Or	WinActive ("Dofus - Mozilla Firefox")
		AutoItSetOption ("WinTitleMatchMode", 1)
		WinSetTitle ("Dofus", "", "Dofus - " & $aLog[$compteBis])
		TrayTip ("","",0)
		Sleep (1000)
		Traytip (@ScriptName, "Veuillez placer votre curseur" & @CRLF & 'sur la zone "Compte Ankama".', 10)
		AutoItSetOption ("MouseCoordMode", 0)
		$posDof = WinGetClientSize ("Dofus - " & $aLog[$compteBis])
		Do
			$posCur = MouseGetPos ()
			Sleep(20)
		Until	(MouseGetCursor () = 5)	And	($posCur[0] < $posDof[0])	And	($posCur[1] < $posDof[1])	And	($posCur[0] > 0)	And	($posCur[1] > 0)	And	WinActive ("Dofus - " & $aLog[$compteBis])
		MouseClick ("left")
;~ Send ("^f")	;Mode "plein écran"
		Send ($NDCMDP[1], 1)
		Send ("{TAB}")
		Send ($NDCMDP[2], 1)
		AutoItSetOption ("MouseCoordMode", 1)
		TrayTip (@Scriptname, "Veuillez passer votre souris" & @CRLF & 'sur le bouton "OK".', 0)
		Do
			sleep (20)
			$cur = MouseGetPos ()
		Until	((MouseGetCursor () = 0)	And	(PixelGetColor ($cur[0], $cur[1]) = 0xFF9900))
		MouseClick ("left")
		TrayTip ("", "", 0)
	EndIf
	DesAct ()
	Return
EndFunc
Func	Message () ;à inter-agir avec SkinDB.txt, avec la variable MessageFlood
	Switch	Random (0, 4, 1)
		Case	0
			Return	"(\__/)" & @CRLF & "( ' . ' )" & @CRLF & '(")_(")'
		Case	1
			Return	@CRLF & "Vous pouvez aussi aller jouer dehors," & @CRLF & "avec les papillons, les fleurs et les oiseaux."
		Case	2
			Return	""
		Case	3
			Return	@CRLF & "Ou patientez 2 secondes," & @CRLF & "que la fenêtre se ferme d'elle-même."
		Case	4
			Return	@CRLF & "La Vie est comme cette boîte de dialogue :" & @CRLF & "C'est quand elle se ferme qu'on arrive à l'essentiel."
	EndSwitch
EndFunc
;==========================Fonctions AutoIt 3 modifiées========================================
Func	_FileWriteToLine2 ($sFile, $iLine, $sText, $fOverWrite = 0)
	If	Not	FileExists ($sFile)	Then	FileWrite ($sFile, @CRLF)
	Local	$filtxt = FileRead ($sFile, FileGetSize ($sFile))
	$filtxt = StringSplit ($filtxt, @CRLF, 1)
	If	$filtxt[0]< $iLine	Then	ReDim	$filtxt[$iLine + 1]
	Local	$fil = FileOpen ($sFile, 2), $i
	For	$i = 1	To	UBound ($filtxt) - 1
		If	$i = $iLine	Then
			If	$fOverWrite = 1	Then
				If	$sText <> @CRLF	Then
					If	$i < UBound ($filtxt, 1) - 1	Then
						FileWrite ($fil, $sText & @CRLF)
					ElseIf	$i = UBound ($filtxt, 1) - 1	Then
						FileWrite ($fil, $sText) 
					EndIf
				Else
					If	$i < UBound ($filtxt, 1) - 1	Then
						FileWrite ($fil, $sText)
					EndIf
				EndIf
			EndIf
			If	$fOverWrite = 0	Then
				If	$i < UBound ($filtxt, 1) - 1	Then
					FileWrite ($fil, $sText & @CRLF)
					FileWrite ($fil, $filtxt[$i]& @CRLF)
				ElseIf	$i = UBound ($filtxt, 1) - 1	Then
					FileWrite ($fil, $sText & @CRLF)
					FileWrite ($fil, $filtxt[$i])
				EndIf
			EndIf
		ElseIf	$i < UBound ($filtxt, 1) - 1	Then
			FileWrite ($fil, $filtxt[$i]& @CRLF)
		ElseIf	$i = UBound ($filtxt, 1) - 1	Then
			FileWrite ($fil, $filtxt[$i])
		EndIf
	Next
	FileClose ($fil)
	Return	1
EndFunc	;==>_FileWriteToLine2
Func _FileWriteFromArray2 ($File, $a_Array, $i_Base = 0, $i_UBound = -1)
	Local	$hFile, $x
	If	IsString ($File)	Then
		$hFile = FileOpen ($File, 2)
	Else
		$hFile = $File
	EndIf
	If	$hFile = -1	Then	Return	SetError (1, 0, 0)
	If	$i_UBound < 1	Then	$i_UBound = UBound ($a_Array)
	$x = $i_Base
	Do
		FileWrite ($hFile, $a_Array[$x]& @CRLF)
		$x += 1
	Until	$x = $i_UBound
	FileWrite ($hFile, $a_Array[$i_UBound])
	If	IsString ($File)	Then	FileClose ($hFile)
EndFunc  	;==>_FileWriteFromArray2
Func	_FileReadToArray2 ($sFilePath, ByRef	$aArray)
	Local	$hFile
	$hFile = FileOpen ($sFilePath, 0)
	If	$hFile = -1	Then
		SetError (1)
		Return	0
	EndIf
	$aArray = StringSplit (StringStripCR (FileRead ($hFile, FileGetSize ($sFilePath))), @CRLF)
	FileClose ($hFile)
	Return	1
EndFunc	;==>_FileReadToArray2
819 lignes.. (soit 200 de plus que la 1_9b, juste pour les skins.)

Vous remarquerez le retour des commentaires, c'est normal !

Et le source du fichier texte (bien que disponible plus haut) :
Code:
fenBase
	Type : Fenêtre
	contenu1 : @ScriptName
	largeur : $lFen
	hauteur : 19+50+$tFen*$Ht+30
	posx : -1
	posy : -1
	style : 0x70000

	Fichiers
		Type : Menu
		contenu1 : "Fichier"
		parenté : -1
		Positionnement : 0

		FNouv
			Type : S-Menu
			contenu1 : "Nouveau"
			parenté : $Fichiers
			Positionnement : 0

		FCharge
			Type : S-Menu
			contenu1 : "Charger"
			parenté : $Fichiers
			Positionnement : 1

		FLigneVide
			Type : S-Menu
			contenu1 : ""
			parenté : $Fichiers
			Positionnement : 2

		FQuit
			Type : S-Menu
			contenu1 : "Quitter"
			parenté : $Fichiers
			Positionnement : 3

	Options
		Type : Menu
		contenu1 : "Options"
		parenté : -1
		Positionnement : 1

		OLog
			Type : Menu
			contenu1 : "Compte"
			parenté : $Options
			Positionnement : 0

			LLancer
				Type : S-Menu
				contenu1 : "Lancer !"
				parenté : $OLog
				Positionnement : 0

			LNouveau
				Type : S-Menu
				contenu1 : "Nouveau"
				parenté : $OLog
				Positionnement : 1

			LModifier
				Type : S-Menu
				contenu1 : "Modifier"
				parenté : $OLog
				Positionnement : 2

			LSupprimer
				Type : S-Menu
				contenu1 : "Supprimer"
				parenté : $OLog
				Positionnement : 3

		ORaccourcis
			Type : Menu
			contenu1 : "Raccourcis"
			parenté : $Options
			Positionnement : 1

			RNouveau
				Type : S-Menu
				contenu1 : "Nouveau"
				parenté : $ORaccourcis
				Positionnement : 0

			RCharge
				Type : S-Menu
				contenu1 : "Charger"
				parenté : $ORaccourcis
				Positionnement : 1

			RModifier
				Type : S-Menu
				contenu1 : "Modifier"
				parenté : $ORaccourcis
				Positionnement : 2

			RSupprime
				Type : S-Menu
				contenu1 : "Supprimer"
				parenté : $ORaccourcis
				Positionnement : 3

		:OSkin
			Type : Menu
			contenu1 : "Skins"
			parenté : $Options
			Positionnement : 2

			SNouveau
				Type : S-Menu
				contenu1 : "Nouveau"
				parenté : $OSkin
				Positionnement : 0

			SSauvegarder
				Type : S-Menu
				contenu1 : "Sauver"
				parenté : $OSkin
				Positionnement : 1

			SModifier
				Type : S-Menu
				contenu1 : "Modifier"
				parenté : $OSkin
				Positionnement : 2

			SCharger
				Type : S-Menu
				contenu1 : "Charger"
				parenté : $OSkin
				Positionnement : 3

	Aide
		Type : Menu
		contenu1 : "Aide"
		parenté : -1
		Positionnement : 3

		ATuto
			Type : S-Menu
			contenu1 : "Tutoriel"
			parenté : $Aide
			Positionnement : 0

	Label
		Type : Label
		contenu1 : "Choisissez un compte à Logger :"
		posx : 1
		posy : -2
		largeur : -1
		hauteur : -1
		style : -1
		étendu : 0

	Boutons
		Type : Groupe
		parenté : $fenBase

		Lancer
			Type : Bouton
			contenu1 : "Lancer !"
			posx : 150
			posy : $Ht/2+$Ht/2*$tFen
			largeur : 47
			hauteur : 25

		Multico
			Type : Checkbox
			contenu1 : "Multi"
			posx : 150
			posy : $Hligne+$Ht+$Ht/2*$tFen
			largeur : -1
			hauteur : $Hligne
			Resize : 8+768
			État : $multi

		Modifier
			Type : Bouton
			contenu1 : "Modifier"
			posx : 150
			posy : 33+$tFen*$Ht
			largeur : 47
			hauteur : 25
			style : 0x8000
			Resize : 8+64+768

		Nouveau
			Type : Bouton
			contenu1 : "Nouveau"
			posx : 1
			posy : 33+$tFen*$Ht
			largeur : -1
			hauteur : 25
			style : 0x8000
			Resize : 8+64+768

		Supprimer
			Type : Bouton
			contenu1 : "Supprimer"
			posx : 75
			posy : 33+$tFen*$Ht
			largeur : -1
			hauteur : 25
			style : 0x8000
			Resize : 8+64+768

		CFini
			Type : Checkbox
			contenu1 : "Fermer le script après ce compte"
			posx : 15
			posy : $Hligne
			largeur : -1
			hauteur : 13
			Resize : 2+32+768
			État : $fin

		Ajoute
			Type : Bouton
			contenu1 : "Ajouter ->"
			posx : 275
			posy : 0
			largeur : -1
			hauteur : -1

		Retire
			Type : Bouton
			contenu1 : "<- Retirer"
			posx : 275
			posy : 27+Ubound($coListe)*$Ht
			largeur : -1
			hauteur : -1

		Haut
			Type : Bouton
			contenu1 : "Monte"
			posx : 205
			posy : $Ht+$Ht*(UBound($CcoListe)-1)/2
			largeur : 40
			hauteur : -1

		Bas
			Type : Bouton
			contenu1 : "Baisse"
			posx : 205
			posy : ($Ht-3)+$Ht+$Ht*(UBound($CcoListe)-1)/2
			largeur : 40
			hauteur : -1

		Surnoms
			Type : Radio
			contenu1 : $aLog[$compteBis*$NbLignes-1]&" ."
			posx : 5
			posy : 27+($compteBis-1)*$Ht
			largeur : 135
			hauteur : $Ht-3
			style : 0x2000
			Data : $aLog[$compteBis*$NbLignes-1]
			Resize : 2+32+512

		ListeMulti
			Type : Checkbox
			contenu1 : $aLog[$coListe[$compteBis] * $NbLignes - 1]
			posx : 255
			posy : 27+$compteBis * $Ht

FenMod
	Type : Fenêtre
	contenu1 : @ScriptName & " - ajouter/modifier"
	largeur : 200
	hauteur : $HLigne*12
	posx : -1
	posy : -1
	style : -1
	étendu : -1
	Parenté : $fenBase

	LabelSurnom
		Type : Label
		contenu1 : "Veuillez entrer un" & @CRLF & " pseudonyme :"
		posx : 1
		posy : 2
		largeur : 100
		hauteur : -1
		style : -1
		étendu : -1

	LabelClef
		Type : Label
		contenu1 : @CRLF&"Clef de cryptage :"
		posx : 120
		posy : 0
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1

	LabelNDC
		Type : Label
		contenu1 : "Veuillez entrer le nom de compte Dofus :"
		posx : 0
		posy : $HLigne*4
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1

	LabelMDP
		Type : Label
		contenu1 : "Veuillez entrer le mot de pass associé :"
		posx : 0
		posy : $HLigne*7
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1

	InputPseudo
		Type : Input
		contenu1 : $aLog[$compteBis]
		posx : 2
		posy : $Hligne*2
		largeur : 125
		hauteur : -1
		style : -1
		étendu : -1

	InputClef
		Type : Input
		contenu1 : ""
		posx : 149
		posy : $Hligne*2
		largeur : 50
		hauteur : -1
		style : -1
		étendu : -1

	InputNDC
		Type : Input
		contenu1 : ""
		posx : 2
		posy : $Hligne*5
		largeur : 196
		hauteur : -1
		style : -1
		étendu : -1

	InputMDP
		Type : Input
		contenu1 : ""
		posx : 2
		posy : $Hligne*8
		largeur : 196
		hauteur : -1
		style : -1
		étendu : -1

	BValide
		Type : Bouton
		contenu1 : "Valider"
		posx : 2
		posy : $Hligne*10
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1

	BAnnule
		Type : Bouton
		contenu1 : "Annuler"
		posx : 100
		posy : $Hligne*10
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1

FenRac
	Type : Fenêtre
	contenu1 : @ScriptName
	largeur : 170
	hauteur : 5*$Ht+$Hligne
	style : -1
	étendu : -1
	parenté : $fenBase

	LabelSansNom
		Type : Label
		contenu1 : "Sélectionnez le script :"
		posx : 0
		posy : 0
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1

	IScript
		Type : Input
		contenu1 : @ScriptFullPath
		contenu2 : $r[0]
		posx : 5
		posy : $Hligne
		largeur : 100
		hauteur : -1
		style : -1
		étendu : -1

	BSParc
		Type : Bouton
		contenu1 : "Parcourir"
		posx : 110
		posy : $Hligne
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1

	LabelSansNom2
		Type : Label
		contenu1 : "Sélectionnez le log :"
		posx : 0
		posy : $Ht+$Hligne
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1

	ILog
		Type : Input
		contenu1 : $logChemin
		contenu2 : StringMid($r[2],3,StringInStr($r[2],'"',2,2)-3)
		posx : 5
		posy : $Ht+2*$Hligne
		largeur : 100
		hauteur : -1
		style : -1
		étendu : -1

	BLParc
		Type : Bouton
		contenu1 : "Parcourir"
		posx : 110
		posy : $Ht+2*$Hligne
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1

	LabelSansNom3
		Type : Label
		contenu1 : "Entrez les n° des comptes :"
		posx : 0
		posy : 2*$Ht+2*$Hligne
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1

	IComptes
		Type : Input
		contenu1 : $compte
		contenu2 : StringMid($r[2],StringInStr($r[2],'"',2,2)+2)
		posx : 5
		posy : 2*$Ht+3*$Hligne
		largeur : 100
		hauteur : -1
		style : -1
		étendu : -1

	BValide
		Type : Bouton
		contenu1 : "Valider"
		;posx : 0
		posy : 2*$Ht+3*$Hligne
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1

	BAnnule
		Type : Bouton
		contenu1 : "Annuler"
		;posx : 0
		posy : 2*$Ht+3*$Hligne
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1

MessageFlood
	Type : 5
	contenu1 : "(\__/)" & @CRLF & "( ' . ' )" & @CRLF & '(")_(")'
	contenu2 : @CRLF & "Vous pouvez aussi aller jouer dehors," & @CRLF & "avec les papillons, les fleurs et les oiseaux."
	contenu3 : ""
	contenu4 : @CRLF & "Ou patientez 2 secondes," & @CRLF & "que la fenêtre se ferme d'elle-même."
	contenu5 : @CRLF & "La Vie est comme cette boîte de dialogue :" & @CRLF & "C'est quand elle se ferme qu'on arrive à l'essentiel."

Fenêtre :
	Type : Fenêtre
	contenu1 : 
	contenux :
	largeur : 
	hauteur : 
	posx : 
	posy : 
	style : 
	étendu : 
	parenté : 
Contrôle :
	Type : 
	contenu1 : 
	contenux : 
	posx : -1
	posy : -1
	largeur : -1
	hauteur : -1
	style : -1
	étendu : -1
	Data : 
	Resize : 
	État : 
Menu :
	Type : 
	contenu1 : 
	contenux :
	parenté : 
	Positionnement : 
	État : 
Flood :
	Type : Nombre de messages
	contenu1 : 
	contenux : 
Global :
	Type : $SkinBase[0]
		Curfen, Fenêtre, Fond-F, Ic-F, Police-Fen, OnEvent, State, Stylfaen
		Avi, Bouton, Calendrier, Checkbox, Combo, Dat'action, Editeur, Graphisme, Groupe, Icône, Image, Input, Label, Liste, Menu, MiniMenu, Radio, S-Menu
		Coul, D-Coul, D-Fond-C, Data, État, Event, Fond-C, Graphip'tit, Im-C, Police-C, Pos, Resize, Restyle, Titruc
		Nombre déterminant de messages floodesques (cas unique) -> Rand (0 à Nombre-1, 1)
	contenu1 : Lié à conditions $SkinBase[1]
	contenu2 : Lié à conditions.. etc $SkinBase[1] (aussi)
	posx, posy, largeur, hauteur : Chiffres $SkinBase[2 à 5]
	style, étendu : 0xChiffre $SkinBase[6 et 7]
	parenté : Chiffre/Nom de variable $SkinBase[8] ou $SkinBase[3] pour un élément de menu
	Positionnement : Chiffre $SkinBase[4] spécifique aux menus
Youhou, j'ai terminé la transformation des fenêtres en association avec le Skin pour la Bêta2.
Prochaine chose à faire, c'est rajouter la possibilité de créer/modifier un skin.

Avancement entre la 1_9b et la 1_10Bêta2 :
-> Correction du bug graphique de suppression d'une entrée de la liste principale présente dans la liste de multi
-> Possibilité de modifier un nom de compte et/ou un mot de pass associés à un surnom (anciennement, il fallait saisir les deux champs pour que la modification soit prise en compte)
-> Module de script presque totalement implanté, modification/création à faire. (+ quelques options graphiques manquantes pour l'instant.)

Voilà, à bientôt pour la nouvelle version ! ^^

Za.
Je met plus de temps à me connecter avec ce script qu'avec le client normal...

Avec le client normal :
-Je l'ouvre
-Je tape mon mot de passe (nom de compte enregistré)
-Je clique sur "Ok"

Avec le script :
-Je l'ouvre
-J'ouvre le log
-Je clique sur "lancer"
-Je tape la clé
-Je passe ma souris aux différents endroits...

Pour gagner du temps il faudrait que le Log s'ouvre tout seul (sauf première utilisation, après y a les options non?) et ne pas avoir à taper la clé de cryptage si celle-ci est vierge. Est-ce possible de crypter le Log par défaut aussi?

Donc pour l'instant, ton script ne m'intéresse pas (c'est plus pour les multi-comptes en fait?)
Citation :
Publié par Shugah
(c'est plus pour les multi-comptes en fait?)
Je l'utilises principalement pour ça, j'ai beaucoup de comptes à ma disposition
http://img72.imageshack.us/img72/1938/busay.png



Et ça me sert juste à ne pas avoir un seul mot de passe à me rappeler. Le seul problème c'est que quand je n'ai pas mon ordinateur devant moi, je connais aucun mot de passe (sauf le mient bien entendu)
Pour répondre exactement à ta demande, Shugah, il y a les raccourcis dans les options.
Option -> Raccourcis -> Nouveau (dans le script.)
La 3ème ligne (seule à modifier, théoriquement) indique le n° des comptes à connecter (à séparer par une simple virgule, sans espace), par défaut le compte actuellement sélectionné.
En appuyant sur "Valider", tu indiques l'emplacement de création (ex : le bureau) et le nom du raccourci (ex : "Compte L33t-LeIoP").

Après, un double-clic sur le raccourcis :
-> demande directement la clef du compte choisit
-> lance le Client
-> se ferme une fois la fin des comptes souhaités atteinte.
(description complète : en fait le script se lance, sélectionne le n° de compte du raccourci, effectue comme un appui sur "Lancer", demande la clef, lance le Client si ça n'a pas été annulé, attend que la souris soit passée sur "OK", répète les actions pour chaque compte dans le raccourcis jusqu'à finir la liste, puis se ferme arrivé à la fin.)

Je pense que c'est ça que tu voulais ?

Pour la clef de cryptage vierge, il suffit de valider par entrée la clef vide : c'est le seul raccourcis que je permets pour les flemmards de mon style gens qui ne souhaitent pas chiffrer leurs identifiants.
Sans développer, je ne tiens pas à augmenter le confort d'utilisation au détriment de la sécurité.

Pour ce qui est de chiffrer le log entier, ça doit être possible.
Après une demi-seconde de réflexion : il faudrait avoir une clef globale d'accès au fichier, qui brouillerait tout le contenu de celui-ci.
Une fois cette clef passée, on reprend le système habituel du script..
Donc oui, il est possible de chiffrer aussi le fichier de logs entier.

Tenez-vous vraiment à avoir ce niveau de sécurité supplémentaire ?

(Je peux l'implanter si des gens me le demandent. Mais ça nécessite de passer du temps dessus. Temps qui n'est pas employé à développer le reste/faire autre-chose IRL à côté. )
Remarque : ça me fait un challenge de plus à réaliser.. Ca pourrait être marrant !


Juste en passant, vous pouvez (et je le conseille) stocker le script et le fichier de logs dans un emplacement strictement personnel (une clef USB), ce qui vous permet d'utiliser le DofusLog même en déplacement. ^^


Le DofusLog, pour qui ?
-> Avec le chiffrement (oui, on m'a fait la remarque que c'était "chiffrement" pour les puristes, et non "cryptage". ^^), j'assure autant que possible de garantir la sécurité des informations
-> Avec la multi-connexion, mon script est résolument tourné vers les possibilités de multi
-> Avec les raccourcis, j'ai entamé une simplification du fonctionnement
-> Avec les skins, j'essaie d'améliorer le visuel
Pour tous, et par vous !
(M'enfin, pour mon propre confort en premier, évidemment ! )

Za.
Pas grand-chose à prévoir pour le moment sur les fonctionnalités pures.

Juste quelques améliorations à prévoir pour rendre l'interface notamment plus conviviale (dixit "moins moche" ), mais je travaille sur le skinnage.

J'ai vraiment avancé ! (Sisi, j'ai trouvé un moyen de rokser tout.)
Le problème que je rencontre actuellement, c'est que des "objets" (les boutons, les zones de textes, les menus..) ne se chargent pas bien, pas à leur place, pas comme il faut, ou pas du tout.

Voici pour le funne le code actuel, qui est très légèrement à revoir :
($l, c'est la ligne de SkinDB.txt qui contient la fenêtre à charger, $g c'est une variable temporaire pour éviter de perdre $l, et $Skin, c'est le chargement dans le script de SkinDB.txt.
$t est plus complexe à décrire : c'est le conteneur de l'objet créé. ~ Une sorte de "Pages jaunes" dynamique, on va dire.)
Code:
For $g = $l To 	UBound ($Skin) - 1
	$t = StringRight ($Skin[$g], StringLen ($Skin[$g]) - StringInStr ($Skin[$g], "	", 2, -1))

(..Quelques lignes après, je passe sur les détails spécifiques ^^..)

	Assign ($t, Skinappel ($Skin[$g]))
Next
En français, ça donne : partir de la ligne demandée (pour charger la fenêtre "Nouveau surnom", on ne recharge pas la fenêtre principale d'abord), puis effectuer toutes les actions nécessaires pour remplir la fenêtre, avec le contenu "intéressant".

Sauf que le contenu intéressant est difficile à dissocier du reste, et parfois y'a des objets assez particuliers qui ont des références bizarroïdes : (3 exemples)
Code:
Multico
	Type : Checkbox
	contenu1 : "Multi"
	posx : 150
	posy : $Hligne+$Ht+$Ht/2*$tFen
	largeur : -1
	hauteur : $Hligne
	Resize : 8+768
	État : $multi
ListeMulti
	Type : Checkbox
	contenu1 : $aLog[$coListe[$compteTer]*$NbLignes-1]
	posx : 255
	posy : 27+$compteTer*$Ht
	largeur : -1
Surnoms
	Type : Radio
	contenu1 : $aLog[$compteBis*$NbLignes-1]&" ."
	posx : 5
	posy : 27+($compteBis-1)*$Ht
	largeur : 135
	hauteur : $Ht-3
	style : 0x2000
	Data : $aLog[$compteBis*$NbLignes-1]
	Resize : 2+32+512
Pour le moment, les champs "État", "Data" et "Resize" ne sont pas exploités (ni exploitables), mais j'espère améliorer ma fonction Skinappel() pour qu'elle puisse s'en charger aussi.
(C'est elle qui fait le tri de ce qui est du contenu "destiné à la création pure" (les informations de placement, etc), et le contenu "informatif pour l'utilisateur" ("pox : ", ou "hauteur : ", ou les blancs de début de ligne.).)

J'attend d'avoir débuggué complètement le skinnage pour vous la mettre à disposition. Pour le début de la bêta2, il faudra se charger manuellement du repositionnement des objets. la version 1_10 (complète) ne sortira pas sans un module de création/modification de skins.

Bref, ça avance !
(Franchement, la fonction Assign(), elle rokse !)

Za.
Voilà, la Bêta2 est disponible !
Pour modifier des bouts de l'apparence, il faut éditer le fichier "SkinDB.txt" (à placer dans le répertoire du script. :s), et seules les positions sont accessibles pour l'instant.

En revanche, c'est un plaisir pour moi d'ajouter des boutons et des éléments un-peu partout : il n'y a que 5~6 lignes à rajouter, et c'est parti !

Module d'édition via le script à rédiger, maintenant.. Le gros bout arrive. Tous aux abris ! ^^

Za.
J'ai rajouté un bouton "annuler" à la création d'un nouveau raccourcis, et je prévois un bouton "Nouveau Raccourcis" directement accessible à côté de la liste des surnoms.

Régression repérée, je corrige ça dans quelques temps : le système de raccourcis ne fonctionne plus avec la 1_10bêta2... Je ne sais pas trop d'où ça peut venir, mais je me penche sur le soucis. / J'ai trouvé d'où ça venait, c'est corrigé. (Le chemin d'accès au Skin qui n'était pas complet, et donc introuvable.)
Et je viens de trouver le moyen de rajouter des modifications sur les boutons (Resize, état, contenu..) depuis le SkinDB, donc il sera possible d'ajouter un bouton désactivé de base. (Par exemple.)
'me reste à rajouter les lignes correspondant à la souris, à la couleur, à la police de caractère, etc.. Pour terminer sur le module de création/modification des skins.
Pfiou.. bientôt !
[Longtemps après] Désolée, réinstallation de Windows..
Passage à Vista 32 -> 64 bits, puis installation de WinLSD, puis installation de WinTux, tout-ça juste pour faire tourner ma carte wi-fi, et récupérer mon accès internet.. Je vous aime, c'est pour vous que j'ai fait tout-ça ! ^^

Oui, il est tout à fait possible de modifier une ligne de mon script pour utiliser le multiplay des EHD.

Dans la fonction Charge (), voici la ligne à modifier (environ la ligne 95 du script) :
Code:
$prgChemin = RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\Ankama\Dofus", "Path") & "\"
$prgNom = "Dofus.exe"
If Not FileExists ($prgChemin & $prgNom) Then [...]
C'est $prgNom = "Dofus.exe" qui est à modifier pour mettre $prgNom = "EHD_MultiPlay.html", si vous avez bien placé le EHD_Multiplay dans ce répertoire.

Sinon, vous pouvez choisir un sous-répertoire dans le dossier.
Exemple : votre EHD_Multiplay est décompressé dans C:\Program Files\Dofus\Multiplay, la ligne à changer devient
$prgNom = "Multiplay\EHD_Multiplay.html"

À noter que j'ai beau avoir changé 4 fois d'OS cette semaine, aucun ne m'a permise de jouer à Dofus avec un navigateur.


Pour repartir sur la Bêta3 du DofusLog (v1_10), j'ai ajouté de chercher le chemin "C:\Program File\Dofus" si le chemin dans le registre n'est pas trouvé (quand j'ai réinstallé mon PC, Dofus n'avait pas changé de place mais n'était plus dans mon registre. Modification mineure qui tient plus du bonus).

J'ai bientôt fini de ré-écrire toutes les fonctions du script. Dés que ce sera bon, il ne me restera pas grand-chose pour finir la 1_10 !
Allez, courage.

Za.
Bonjour bonjour, vous l'attendiez (ou pas, depuis le temps ), mais la version 1_10 se rapproche à grandes enjambées !

Je vous l'avais promise, j'ai mit du temps à la développer, mais j'ai réussit à faire ce que je souhaitais : une apparence par un fichier externe contenant toutes les informations de skin, et qui n'a aucune interaction avec le script. (Donc, on ne peut pas modifier le SkinDB.txt pour faire nawak !)

Concrètement, ça change quoi ?
-> Le script est très allégé côté programmation, car il ne contient plus que les fonctions utiles
-> Le fichier de skin est interactif, donc vous pouvez le modifier à votre guise, tout est accepté. (Vi, tout ! changer les couleurs, les polices, la taille des fenêtres, ajouter des images...)

(Foule en délire : )Mais.. Ca roxe !
Pas encore tout à fait (d'où le nom de "bêta" qui traîne), il me reste à faire une petite fonction pour que ça soit facile à prendre en main. Une apparence graphique, quand on clique sur un bouton, y'a toutes ses infos qui s'affichent, plus qu'à changer ce qu'on veut. (Et à remettre à jour en temps réel le skin, aussi. Pour le moment, il faut relancer le script pour voir les modifications à l'oeuvre.)

Hey, t'as tout changé ton code ! T'as sûrement planqué un Keylog dedans.
Non, c'est une des choses qui me tient à coeur, c'est le respect de la sécurité.
Le code en lui-même n'a fait que se simplifier.
Chaque bouton cliqué lance maintenant une fonction (vous pouvez voir la correspondance bouton -> fonction dans le fichier de skin) totalement sûre (aucun paramètre ne peut être transmit à une fonction depuis un bouton).
J'ai aussi divisé par 11 (!) la taille de la fonction principale, qui passe de 44 lignes (version 1_9b) à 4 lignes (version 1_10Bêta4b).

Pourquoi ce nom ? Et d'ailleurs, pourquoi "bêta" ?
La version est encore en bêta, car il reste quelques options à modifier. Notamment, la fermeture d'une fenêtre de type "Pop-Up" (modification d'un compte, ou nouveau raccourcis) ferme aussi la fenêtre principale.
Et je suis passée de la 1_10Bêta 2 à la bêta 4 pour vous, vu que je n'étais pas satisfaite de la 3, je l'ai refaite (donc, passée à 4). Ensuite, j'ai modifié un truc de trop, je n'arrivais plus à la faire fonctionner, donc j'ai re-fait la bêta 4 en mieux, d'où le nom de v1_10Bêta4bis.

Ce que vous attendez tous (attention, à partir de maintenant, il faut récupérer le script et le skin, sous peine de ne rien voir s'afficher),
Version du script compilée : DofusLog-v1_10Bêta4b.exe - 305.44 kB
Version du script scriptée : DofusLog-v1_10Bêta4b.au3 - 29.58 kB
Version du script source :
Code:
#include <GUIConstants.au3>	;Nécessaire surtout pour le $GUI_EVENT_CLOSE
#include <String.au3>	;Pour l'encryptage
#include <Array.au3>
AutoItSetOption ("GUIOnEventMode", 1)
Global	$fichier, $prgChemin, $prgNom, $FenBase, $Label, $CFini, $fin, $Lancer, $Lance = 0, $Multico, $multi = 0, $Modifier, $Nouveau, $Supprimer, $Ajoute, $Retire, $Haut, $Bas, $Boutons, $Options, $OLog, $LLancer, $LModifier, $LNouveau, $LSupprimer,  $Fichiers, $FNouv, $FCharge, $FQuit, $ORaccourcis, $RNouveau, $RModifier, $RCharge, $RSupprime, $OSkin, $SCharger, $SNouveau, $SModifier, $SSauvegarder, $Aide, $ATuto, $aLog, $coListe, $CcoListe, $Radio, $Skin, $suppr = -1
Global	$NbLignes = 2	;Nombre de lignes utilisées par entrée dans le fichier de Log
Global	$logChemin = @ScriptDir & "\log.txt"
Global	$compte = 1, $compteBis
Dim	$coListe[1]
If	$CmdLine[0] > 0	Then	$logChemin = $CmdLine[1]
If	$CmdLine[0] > 1	Then
	$coListe = StringSplit ($CmdLine[2], ",")
	For	$n = 0	To	UBound ($coListe) - 2
		$coListe[$n] = $coListe[$n+1]
	Next
	ReDim	$coListe[UBound ($coListe) - 1]
	$Lance = 1
	$fin = $GUI_CHECKED	;Pas obligatoire, en fait, mais préférable, finalement.
EndIf
Global	$Separ = 4	;Séparateur, hauteur en pixels entre deux lignes
Global	$Hligne = 13	;hauteur présumée par ligne (13 pixels de haut, voire 14)
Global	$Ht = $Separ + 2 * $Hligne
Global	$msg
Dim	$aLog[3]
Dim	$Ccoliste[UBound ($coListe)]
_FileReadToArray2 (@ScriptDir & "\SkinDB.txt", $Skin)	;rendre modifiable ce chemin

ChargeLog (0)
While	1
	Sleep(100)
	If	$Lance = 1	Then	Lance ()
WEnd
	;==============================Fonctions totalement créées par Za====================================
Func	ChargeLog ($nouv = 1)
	If	Not	FileExists ($logChemin)	Or	$nouv = 1	Then
		TrayTip (@ScriptName, "Veuillez sélectionner un fichier texte.", 0)
		$fichier = FileOpenDialog (@ScriptName & " - Sélectionnez ou créez un fichier contenant vos logs", $logChemin, "Text files (*.txt)|All files (*.*)", 8, "Log.txt")
		If	$fichier = ""	Then	Exit	;Ok, c'est violent, mais bon.. ^^
		TrayTip (@ScriptName, "Enregistrement de la place du Log en cours", 1, 16)
		_FileWriteToLine2 (@ScriptFullPath, 12,'Global	$logChemin = "' & $fichier & '"', 1)
		TrayTip ("", "", 0)
	Else
		$fichier = $logChemin
	EndIf
	$existe = _FileReadToArray2 ($fichier, $aLog)

	;$prgChemin et $prgNom n'ont rien à faire ici, normalement. Sauf à associer les logs avec une application.
	$prgChemin = RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\Ankama\Dofus", "Path") & "\"
	$prgNom = "Dofus.exe"
	If	Not	FileExists ($prgChemin & $prgNom)	Then
		If	Not	FileExists ($prgChemin & "Dofus_client.exe")	Then
			$prgChemin = "C:\Program Files\Dofus\"
			If	Not	FileExists ($prgChemin & $prgNom)	Then
				If	Not	FileExists ($prgChemin & "Dofus_client.exe")	Then
					$prgNom = FileOpenDialog (@ScriptName & " - Sélectionnez votre lanceur de jeu Dofus", $prgChemin, "(*.exe; *.html)|Tous (*.*)", 1, "Dofus")
				Else
					$prgNom = "Dofus_client.exe"
				EndIf
			EndIf
		Else
			$prgNom = "Dofus_client.exe"
		EndIf
	EndIf

	If	Not	$existe	Then
		Modifier (1, $fichier)
	EndIf

	_FileReadToArray2 ($fichier, $aLog)
	Dim	$Radio[(UBound ($aLog) + 1) / $NbLignes]
	
	Fenetre ()
EndFunc
Func	Fenetre ($GUI = "FenBase")	;String
	Global	$tFen = (UBound ($aLog) - 1) / $NbLignes
	Global	$lFen = (200 + 200 * ($multi = 1))
	If	$GUI = "FenBase"	Then	GUIDelete ($FenBase)
	
	;Appeler la fonction skin : Skinappel($string)
	For $l = 1 to UBound ($Skin) - 1
		If	$Skin[$l] = $GUI	Then	ExitLoop
	Next
	For $g = $l To 	UBound ($Skin) - 1
		If	(StringLeft ($Skin[$g], 3) = "Fen")	And	($g <> $l)	Then	ExitLoop
		If	(StringLeft ($Skin[$g], 3) = "Fen")	And	($g = $l)	Then
			$t = $Skin[$g]
		Else
			$t = StringRight ($Skin[$g], StringLen ($Skin[$g]) - StringInStr ($Skin[$g], "	", 2, -1))
		EndIf
		If	Not (StringInStr ($Skin[$g], ":"))	And	($Skin[$g] <> "")	Then
			Switch	$t
				Case "Multico"
					If	UBound ($aLog) / $NbLignes > 2	Then
						Assign ($t, Skinappel ($Skin[$g]))
					EndIf
				Case	"Ajoute", "Retire", "Haut", "Bas", "ListeMulti"
					If	$multi = 1	And	$Lance <> 1	Then
						If	$t = "ListeMulti"	Then
							If	$coListe[0] = ""	Then	$coListe[0] = $compte
							$compteBis = 0
							While	$compteBis < UBound ($coListe)
								$CcoListe[$compteBis] = Skinappel ($Skin[$g])
								$compteBis += 1
							WEnd
						Else
							Assign ($t, Skinappel ($Skin[$g]))
						EndIf
					EndIf
				Case	"Surnoms"
					$compteBis = 1
					While	$compteBis < (UBound ($aLog)) / $NbLignes
						$Radio[$compteBis] = Skinappel ($Skin[$g])	;+image
;~				 		GUICtrlSetLimit ($Radio[$compteBis], 12)	;pour limiter la largeur des caractères. (je n'ai pas trouvé comment faire.)
						$compteBis += 1
					WEnd
					GUICtrlSetState ($Radio[$compte], 1 + 256)
					GUICtrlSetPos ($Radio[$compte], 15, 30 + ($compte - 1) * $Ht)
					$compteBis = $compte
				Case	Else	;Dans tous les cas "normaux"
					Assign ($t, Skinappel ($Skin[$g]))
			EndSwitch
		EndIf
	Next
	GUISetOnEvent($GUI_EVENT_CLOSE, "Quit")
	GUISetState ()
	If	$GUI = "FenBase"	Then	DesAct ()
EndFunc
Func	Skinappel ($String)
	Local	$ligne = 1, $ligneBis
	Local	$param, $s
	Dim	$SkinBis[9]
	
	Do
		$ligne += 1
	Until	$Skin[$ligne - 1] = $String
	$marqueur = StringInStr ($Skin[$ligne], "	", 2, 1)
	$ligneBis = $ligne
	While	StringInStr ($Skin[$ligneBis], "	", 2, 1) = $marqueur
		$param = StringRight (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], "	", 2, -1)), StringLen (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], "	", 2, -1))) - StringInStr (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], "	", 2, -1)), ":") - 1)
		If	(Execute ($param) <> '')	Or	($param = '""')	Then	$param = Execute ($param)
		Switch	StringLeft (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], "	", 2, -1)), StringInStr (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], "	", 2, -1)), ":"))
			Case	"Type :"
				$SkinBis[0] = $param ;commande choisie
			Case	"contenu1 :"
				If	$param = "$aLog[$compteBis]"	Then
					$SkinBis[1] = ""
				Else
					$SkinBis[1] = $param ;valeur affectée
				EndIf
			Case	"largeur :"
				If	$SkinBis[0] = "Fenêtre"	Then
					$SkinBis[2] = $param
				Else
					$SkinBis[4] = $param
				EndIf
			Case	"hauteur :"
				If	$SkinBis[0] = "Fenêtre"	Then
					$SkinBis[3] = $param
				Else
					$SkinBis[5] = $param
				EndIf
			Case	"posx :"
				If	$SkinBis[0] = "Fenêtre"	Then
					$SkinBis[4] = $param
				Else
					$SkinBis[2] = $param
				EndIf
			Case	"posy :"
				If	$SkinBis[0] = "Fenêtre"	Then
					$SkinBis[5] = $param
				Else
					$SkinBis[3] = $param
				EndIf
			Case	"style :"
				If $SkinBis[5] = ""	Then
					If	$SkinBis[4] = ""	Then	$SkinBis[4] = -1
					$SkinBis[5] = -1
				EndIf
				$SkinBis[6] = $param
			Case	"étendu :"
				$SkinBis[7] = $param
			Case	"parenté :"
				If	$SkinBis[0] = "Groupe"	Then
					$SkinBis[1] = $param
				ElseIf	($SkinBis[0] = "Menu")	Or	($SkinBis[0] = "S-Menu")	Then
					$SkinBis[2] = $param
				Else
					$SkinBis[8] = $param
				EndIf
			Case	"Positionnement :"
				$SkinBis[3] = $param
		EndSwitch
		$ligneBis += 1
	WEnd
	$s = Skin ($SkinBis)
	Dim	$SkinTer[2]
	$ligneBis = $ligne
	While	StringInStr ($Skin[$ligneBis], "	", 2, 1) = $marqueur
		$SkinTer[1] = StringRight (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], "	", 2, -1)), StringLen (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], "	", 2, -1))) - StringInStr (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], "	", 2, -1)), ":") - 1)
		If StringInStr ($SkinTer[1], ",") > 0	Then
			$SkinTer = StringSplit ($SkinTer[1], ",")
		ElseIf	(Execute ($SkinTer[1]) <> '')	Or	($SkinTer[1] = '""')	Then
			$SkinTer[1] = Execute ($SkinTer[1])
		EndIf
		$SkinBis[0] = StringLeft (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], "	", 2, -1)), StringInStr (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], "	", 2, -1)), ":") - 2)
		Switch	$SkinBis[0]
			Case	"Curfen"
				$SkinBis[1] = $SkinTer[1]
				$SkinBis[2] = 0	;ou 1 pour remplacer constamment le curseur dans la fenêtre ciblée
				$SkinBis[3] = $s
				Skin($SkinBis)
			Case	"Fond-F"
				$SkinBis[1] = $SkinTer[1]
				$SkinBis[2] = $s
				Skin ($SkinBis)
			Case	"Ic-F"
				$SkinBis[1] = $SkinTer[1]
				$SkinBis[2] = -1	;(pour l'icône par défaut du fichier ciblé...)
				$SkinBis[3] = $s
				Skin ($SkinBis)
			Case	"Police-Fen"
				$SkinBis[1] = $SkinTer[1]	;size
				$SkinBis[2] = $SkinTer[2]	;weight
				$SkinBis[3] = $SkinTer[3]	;attribute
				$SkinBis[4] = $SkinTer[4]	;fontname
				$SkinBis[5] = $s	;winhandle
				Skin ($SkinBis)
			Case	"OnEvent"	;ne fonctionne pas encore. Snaffou. :(
				$SkinBis[1] = $SkinTer[1]	;Event ciblé
				$SkinBis[2] = $SkinTer[2]	;fonction associée
				$SkinBis[3] = $s
;~ 				Skin ($SkinBis)
			Case	"State"
				$SkinBis[1] = $SkinTer[1]
				$SkinBis[2] = $s
				Skin ($SkinBis)
			Case	"Stylfaen"
				$SkinBis[1] = $SkinTer[1]
				$SkinBis[2] = $SkinTer[2]
				$SkinBis[3] = $s
				Skin ($SkinBis)
			Case	"Coul"
				$SkinBis[1] = $s
				$SkinBis[2] = $SkinTer[1]
				Skin ($SkinBis)
			Case	"Cur"
				$SkinBis[1] = $s
				$SkinBis[2] = $SkinTer[1]
				Skin ($SkinBis)
			Case	"D-Coul"
				$SkinBis[1] = $SkinTer[1]
				$SkinBis[2] = $s
				Skin ($SkinBis)
			Case	"D-Fond-C"
				$SkinBis[1] = $SkinTer[1]
				$SkinBis[2] = $s
				Skin ($SkinBis)
			Case	"Data"
				$SkinBis[1] = $s
				$SkinBis[2] = $SkinTer[1]
				Skin ($SkinBis)
			Case	"Etat"
				$SkinBis[1] = $s
				$SkinBis[2] = $SkinTer[1]
				Skin ($SkinBis)
			Case	"Event"
				$SkinBis[1] = $s
				$SkinBis[2] = $SkinTer[1]
				Skin ($SkinBis)
			Case	"Fond-C"
				$SkinBis[1] = $s
				$SkinBis[2] = $SkinTer[1]
				Skin ($SkinBis)
			Case	"Graphip'tit"
				$SkinBis[1] = $s
				$SkinBis[2] = $SkinTer[1]
				For	$n = 2	To	UBound ($SlinTer) - 1
					$SkinBis[$n + 1] = $SkinTer[$n]	;par($n)
				Next
				Skin ($SkinBis)
			Case	"Im-C"
				$SkinBis[1] = $s
				$SkinBis[2] = $SkinTer[1]
				$SkinBis[3] = $SkinTer[2]	;icône
				$SkinBis[4] = $SkinTer[3]	;type
				Skin ($SkinBis)
			Case	"Police-C"
				$SkinBis[1] = $s
				$SkinBis[2] = $SkinTer[1]	;size
				$SkinBis[3] = $SkinTer[2]	;weight
				$SkinBis[4] = $SkinTer[3]	;attribute
				$SkinBis[5] = $SkinTer[4]	;fontname
				Skin ($SkinBis)
			Case	"Pos"
				$SkinBis[1] = $s
				$SkinBis[2] = $SkinTer[1]	;left
				$SkinBis[3] = $SkinTer[2]	;top
				$SkinBis[4] = $SkinTer[3]	;width
				$SkinBis[5] = $SkinTer[4]	;height
				Skin ($SkinBis)
			Case	"Resize"
				$SkinBis[1] = $s
				$SkinBis[2] = $SkinTer[1]
				Skin ($SkinBis)
			Case	"Restyle"
				$SkinBis[1] = $s
				$SkinBis[2] = $SkinTer[1]
				$SkinBis[3] = $SkinTer[2]	;étendu
				Skin ($SkinBis)
			Case	"Titruc"
				$SkinBis[1] = $s
				$SkinBis[2] = $SkinTer[1]
				$SkinBis[3] = $SkinTer[2]	;titre
				$SkinBis[4] = $SkinTer[3]	;icône
				$SkinBis[5] = $SkinTer[4]	;options
				Skin ($SkinBis)
		EndSwitch
		$ligneBis += 1
	WEnd
	Return $s
EndFunc
Func	Skin ($Array)
	Switch	$Array[0]
		Case	"Curfen"
			Return	GUISetCursor ($Array[1], $Array[2], $Array[3])
		Case	"Fenêtre"
			Return	GUICreate ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Fond-F"
			Return	GUISetBkColor ($Array[1], $Array[2])
		Case	"Groupe"
			Return	GUIStartGroup ($Array[1])
		Case	"Ic-F"
			Return	GUISetIcon ($Array[1], $Array[2], $Array[3])
		Case	"Police-Fen"
			Return	GUISetFont ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5])
		Case	"OnEvent"
			Return	GUISetOnEvent ($Array[1], $Array[2], $Array[3])
		Case	"State"
			Return	GUISetState ($Array[1], $Array[2])
		Case	"Stylfaen"
			Return	GUISetStyle ($Array[1], $Array[2], $Array[3])
		Case	"Avi"
			Return	GUICtrlCreateAvi ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7], $Array[8])
		Case	"Bouton"
			Return	GUICtrlCreateButton ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Calendrier"
			Return	GUICtrlCreateMonthCal ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Checkbox"
			Return	GUICtrlCreateCheckbox ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Combo"
			Return	GUICtrlCreateCombo ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Dat'action"
			Return	GUICtrlCreateDate ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Editeur"
			Return	GUICtrlCreateEdit ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Graphisme"
			Return	GUICtrlCreateGraphic ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5])
		Case	"Icône"
			Return	GUICtrlCreateIcon ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7], $Array[8])
		Case	"Image"
			Return	GUICtrlCreatePic ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Input"
			Return	GUICtrlCreateInput ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Label"
			Return	GUICtrlCreateLabel ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Liste"
			Return	GUICtrlCreateList ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"Menu"
			Return	GUICtrlCreateMenu ($Array[1], $Array[2], $Array[3])
		Case	"MiniMenu"
			Return	GUICtrlCreateContextMenu ($Array[1])
		Case	"Radio"
			Return	GUICtrlCreateRadio ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
		Case	"S-Menu"
			Return	GUICtrlCreateMenuItem (String ($Array[1]), $Array[2], $Array[3])	;, $Array[4])
		Case	"Coul"
			Return	GUICtrlSetColor ($Array[1], $Array[2])
		Case	"Cur"
			Return	GUICtrlSetCursor ($Array[1], $Array[2])
		Case	"D-Coul"
			Return	GUICtrlSetDefColor ($Array[1], $Array[2])
		Case	"D-Fond-C"
			Return	GUICtrlSetDefBkColor ($Array[1], $Array[2])
		Case	"Data"
			Return	GUICtrlSetData ($Array[1], $Array[2])
		Case	"Etat"
			Return	GUICtrlSetState ($Array[1], $Array[2])
		Case	"Event"
			Return	GUICtrlSetOnEvent ($Array[1], $Array[2])
		Case	"Fond-C"
			Return	GUICtrlSetBkColor ($Array[1], $Array[2])
		Case	"Graphip'tit"
			Return	GUICtrlSetGraphic ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7], $Array[8])
		Case	"Im-C"
			Return	GUICtrlSetImage ($Array[1], $Array[2], $Array[3], $Array[4])
		Case	"Police-C"
			Return	GUICtrlSetFont ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5])
		Case	"Pos"
			Return	GUICtrlSetPos ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5])
		Case	"Resize"
			Return	GUICtrlSetResizing ($Array[1], $Array[2])
		Case	"Restyle"
			Return	GUICtrlSetStyle ($Array[1], $Array[2], $Array[3])
		Case	"Titruc"
			Return	GUICtrlSetTip ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5])
	EndSwitch
EndFunc
Func	DesAct ($DesActive = 0)	;Réactive les boutons par défaut
	If	$DesActive = 1	Then
		GUICtrlSetState ($Lancer, $GUI_DISABLE)
		GUICtrlSetState ($Modifier, $GUI_DISABLE)
		GUICtrlSetState ($Nouveau, $GUI_DISABLE)
		GUICtrlSetState ($Supprimer, $GUI_DISABLE)
		GUICtrlSetState ($Options, $GUI_DISABLE)
		GUICtrlSetState ($Fichiers, $GUI_DISABLE)
		GUICtrlSetState ($Aide, $GUI_DISABLE)
	Else
		GUICtrlSetState ($Lancer, $GUI_ENABLE)
		GUICtrlSetState ($Modifier, $GUI_ENABLE)
		GUICtrlSetState ($Nouveau, $GUI_ENABLE)
		GUICtrlSetState ($Supprimer, $GUI_ENABLE)
		GUICtrlSetState ($Options, $GUI_ENABLE)
		GUICtrlSetState ($Fichiers, $GUI_ENABLE)
		GUICtrlSetState ($Aide, $GUI_ENABLE)
	EndIf
EndFunc
Func	FSupprimer ()
	If	MsgBox (0x51, @ScriptName & " - Suppression", "Souhaitez-vous vraiment détruire cette entrée ?") = 2	Then	Return
	DesAct (1)
	TrayTip (@ScriptName, "Effacement en cours...", 10, 16)
	$ligne = $compte * $NbLignes + 1
	MRetire ($ligne)
	While	$ligne < UBound ($aLog)
		$aLog[$ligne - $NbLignes] = $aLog[$ligne]
		$ligne += 1
	WEnd
	ReDim	$aLog[UBound ($aLog) - $NbLignes]
	ReDim	$Radio[UBound ($Radio) - 1]
	If	$compte > (UBound ($aLog) - 1) / $NbLignes	Then	$compte -= 1
	_FileWriteFromArray2 ($fichier, $aLog, 1, UBound ($aLog) - 1)
	TrayTip ("", "", 0)

	Fenetre ()
EndFunc
Func	FModifier ()
	DesAct (1)
	Modifier ($compte, $fichier)
EndFunc
Func	FNouveau ()
	DesAct (1)
	ReDim	$aLog[UBound ($aLog) + $NbLignes]
	ReDim	$Radio[UBound ($Radio) + 1]
	Modifier ((UBound ($aLog) - 1) / $NbLignes, $fichier)
EndFunc
Func	Modifier ($compteBis, $fich)
	Global	$compteTer = $NbLignes * ($compteBis - 1) + 1
	Global	$FenMod, $LabelSurnom, $LabelClef, $LabelNDC, $LabelMDP, $InputPseudo, $InputClef, $InputNDC, $InputMDP, $BValide, $BAnnule, $Encrypt = StringSplit ($aLog[$compteTer + 1], "{TAB}")
	Fenetre ("FenMod")
EndFunc
Func	ModAnnule ()
	GUIDelete($FenMod)
	Desact ()
EndFunc
Func	ModModifier ()
	If	MsgBox (0x51, @ScriptName & " - Modifications", "Attention, vous vous apprêtez à" & @CRLF & "modifier définitivement ces données." & @CRLF & "Êtes-vous sûr ?") = 2	Then	Return
	If	GUICtrlRead ($InputPseudo) <> ""	Then
		TrayTip (@ScriptName, "Écriture en cours...", 0, 16)
		$aLog[$compteTer] = GUICtrlRead ($InputPseudo)
		_FileWriteToLine2 ($fichier, $compteTer, $aLog[$compteTer], 1)
		If	GUICtrlRead ($InputNDC) <> ""	Then
			If	GUICtrlRead ($InputClef) = "" 	Then
				$Encrypt[1] = GUICtrlRead ($InputNDC)
			Else
				$Encrypt[1] = _StringEncrypt (1, GUICtrlRead ($InputNDC), GUICtrlRead ($InputClef))
			EndIf
		EndIf
		If	GUICtrlRead ($InputMDP) <> ""	Then
			If	GUICtrlRead ($InputClef) = "" 	Then
				$Encrypt[UBound ($Encrypt) - 1] = GUICtrlRead ($InputMDP)
			Else
				$Encrypt[UBound ($Encrypt) - 1] = _StringEncrypt (1, GUICtrlRead ($InputMDP), GUICtrlRead ($InputClef))
			EndIf
		EndIf
		$Encrypt = $Encrypt[1] & "{TAB}" & $Encrypt[UBound ($Encrypt) - 1]
		If	$Encrypt <> $aLog[$compteTer + 1] Then
			$aLog[$compteTer + 1] = $Encrypt
			_FileWriteToLine2 ($fichier, $compteTer + 1, $aLog[$compteTer + 1], 1)
		EndIf
		TrayTip ("", "", 0)
	EndIf
	GUIDelete ($FenMod)
	GUIDelete ($FenBase)
	Fenetre ()
EndFunc
Func	FRadio ()
	Local	$mess = @GUI_CtrlId
	If	$mess <> $Radio[$compte]	Then
		GUICtrlSetPos ($Radio[$compte], 5, 27 + (($compte - 1) * $Ht))
		While	$mess <> $Radio[$compte]
			$compte += 1
			If	$compte > (UBound ($Radio) - 1)	Then
				$compte = 1
			EndIf
		WEnd
		GUICtrlSetPos ($Radio[$compte], 15, 30 + (($compte - 1) * $Ht))
	Else
		If	$multi = 1	Then
			MAjoute ()
		Else
			FLancer ($compte)
			If	$fin = $GUI_CHECKED	Then	Exit
		EndIf
	EndIf
EndFunc
Func	FMultico ()
	$multi = GUICtrlRead ($Multico)
	If	$coListe[0] = ""	Then	$coListe[0] = $compte
	Fenetre ()
EndFunc
Func	MAjoute ()
	Local	$n
	For	$n = 0	To	UBound ($coListe) - 1
		If	$coListe[$n] = $compte	Then	ContinueLoop	2
	Next
	ReDim	$coListe[UBound ($coListe) + 1]
	ReDim	$CcoListe[UBound ($CcoListe) + 1]
	$coListe[UBound ($coListe) - 1] = $compte
	$CcoListe[UBound ($CcoListe) - 1] = GUICtrlCreateCheckbox ($aLog[$coListe[UBound ($CcoListe) - 1]* $NbLignes - 1], 255, 27 + (UBound ($CcoListe) - 1) * $Ht)
	Fenetre ("FenBase")
EndFunc
Func	MRetire ($suppr = -1)
	Local	$n = 0, $q
	While	$n < UBound ($CcoListe)
		If	$suppr = -1	Then
			If	GUICtrlRead ($CcoListe[$n]) = $GUI_CHECKED	And	$suppr = -1	Then
				$q = $n
				While	$q < UBound ($CcoListe) - 1
					$coListe[$q] = $coListe[$q + 1]
					GUICtrlSetState ($CcoListe[$q], GUICtrlRead ($CcoListe[$q + 1]))
					GUICtrlSetData ($CcoListe[$q], GUICtrlRead ($CcoListe[$q + 1], 1))
					$q += 1
				WEnd
				GUICtrlDelete ($CcoListe[UBound ($CcoListe) - 1])
				If	UBound	($coListe) > 1	Then
					ReDim	$coListe[UBound ($coListe) - 1]
					ReDim	$CcoListe[UBound ($CcoListe) - 1]
					GUICtrlSetPos ($Retire, 275, 27 + UBound ($coListe) * $Ht)
					GUICtrlSetPos ($Haut, 205, $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
					GUICtrlSetPos ($Bas, 205, ($Ht - 3) + $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
					$n -= 1
				Else
					$coListe[0] = ""
					$multi = 0
					Fenetre ()
				EndIf
			EndIf
		Else
			If	GUICtrlRead ($CcoListe[$n], 1) = $aLog[$suppr - $NbLignes]	Then
				$q = $n
				While	$q < UBound ($CcoListe) - 1
					$coListe[$q] = $coListe[$q + 1]
					GUICtrlSetState ($CcoListe[$q], GUICtrlRead ($CcoListe[$q + 1]))
					GUICtrlSetData ($CcoListe[$q], GUICtrlRead ($CcoListe[$q + 1], 1))
					$q += 1
				WEnd
				GUICtrlDelete ($CcoListe[UBound ($CcoListe) - 1])
				If	UBound	($coListe) > 1	Then
					ReDim	$coListe[UBound ($coListe) - 1]
					ReDim	$CcoListe[UBound ($CcoListe) - 1]
					GUICtrlSetPos ($Retire, 275, 27 + UBound ($coListe) * $Ht)
					GUICtrlSetPos ($Haut, 205, $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
					GUICtrlSetPos ($Bas, 205, ($Ht - 3) + $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
					$n -= 1
				Else
					$coListe[0] = ""
					$multi = 0
					Fenetre ()
				EndIf
			EndIf
		EndIf
		$n += 1
	WEnd
EndFunc
Func	MHaut ()
	Local	$n = 1, $z, $y
	While	$n < UBound ($CcoListe)
		If	GUICtrlRead ($CcoListe[$n]) = $GUI_CHECKED	Then
			$z = GUICtrlRead ($CcoListe[$n])
			$y = GUICtrlRead ($CcoListe[$n], 1)
			GUICtrlDelete ($CcoListe[$n])
			$CcoListe[$n] = GUICtrlCreateCheckbox (GUICtrlRead ($CcoListe[$n - 1], 1), 255, 27 + $n * $Ht)
			GUICtrlSetState ($CcoListe[$n], GUICtrlRead ($CcoListe[$n - 1]))
			GUICtrlDelete ($CcoListe[$n - 1])
			$CcoListe[$n - 1] = GUICtrlCreateCheckbox ($y, 255, 27 + ($n - 1) * $Ht)
			GUICtrlSetState ($CcoListe[$n - 1], $z)
			$z = $coListe[$n]
			$coListe[$n] = $coListe[$n - 1]
			$coListe[$n - 1] = $z
		EndIf
		$n = $n + 1
	WEnd
EndFunc
Func	MBas ()
	Local	$n = UBound ($CcoListe) - 2, $z
	While	$n >= 0
		If	GUICtrlRead ($CcoListe[$n]) = $GUI_CHECKED	Then
			$z = GUICtrlRead ($CcoListe[$n])
			$y = GUICtrlRead ($CcoListe[$n], 1)
			GUICtrlDelete ($CcoListe[$n])
			$CcoListe[$n] = GUICtrlCreateCheckbox (GUICtrlRead ($CcoListe[$n + 1], 1), 255, 27 + $n * $Ht)
			GUICtrlSetState ($CcoListe[$n], GUICtrlRead ($CcoListe[$n + 1]))
			GUICtrlDelete ($CcoListe[$n + 1])
			$CcoListe[$n + 1] = GUICtrlCreateCheckbox ($y, 255, 27 + ($n + 1) * $Ht)
			GUICtrlSetState ($CcoListe[$n + 1], $z)
			$z = $coListe[$n]
			$coListe[$n] = $coListe[$n + 1]
			$coListe[$n + 1] = $z
		EndIf
		$n = $n - 1
	WEnd
EndFunc
Func	RModif ($mod = 0)
	Global	$n, $r
	Global	$fenRac, $LabelSansNom, $modRac = 0, $IScript, $BSParc, $LabelSansNom2, $ILog, $BLParc, $LComptes, $LabelSansNom3, $IComptes, $RBValide, $RBAnnule
	Fenetre ("FenRac")
EndFunc
Func	ParcoureScript ()
	$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre script :", @ScriptDir, "Scripts (*.au3	;*.exe)|Tous (*.*)", 8, @ScriptName)
	If	$n <> ""	Then	GUICtrlSetData ($IScript, $n)
EndFunc
Func	ParcoureLog ()
	$n = FileOpenDialog (@ScriptName & " - Sélectionnez le fichier contenant vos logs :", $logChemin, "Textes (*.txt)|Tous (*.*)", 8, "Log.txt")
	If	$n <> ""	Then	GUICtrlSetData ($ILog, $n)
EndFunc
Func	RValide ()
	$n = FileOpenDialog (@ScriptName & " - Choissez le nom et répertoire du raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
	If	$n = ''	Then	Return
	If	StringInStr ($n, ".lnk") = 0	Then	$n &= ".lnk"
	FileCreateShortcut (GUICtrlRead ($IScript), $n, "", ' "' & GUICtrlRead ($ILog) & '" ' & GUICtrlRead ($IComptes))
	GUIDelete ($fenRac)
EndFunc
Func	RFinir ()
	GUIDelete ($fenRac)
EndFunc
Func	RCharge ()
	$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
	If	$n = ""	Then	Return
	$r = FileGetShortcut ($n)
	$logChemin = StringMid ($r[2], 3, StringInStr ($r[2], '"', 2, 2) - 3)
	$coListe = StringSplit (StringMid ($r[2], StringInStr ($r[2], '"', 2, 2) + 2), ",")
	For	$n = 0	To	UBound ($coListe) - 2
		$coListe[$n] = $coListe[$n+1]
	Next
	ReDim	$coListe[UBound ($coListe) - 1]
	$Lance = 1
	GUIDelete ($fenBase)
	ChargeLog ()
	Return
EndFunc
Func	RSuppre ()
	$Racc = FileOpenDialog (@ScriptName & " - Sélectionnez votre raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName)
	If	$Racc <> ""	Then	FileDelete ($Racc)
EndFunc
Func	Lance ()
	If	$multi = 1	Or	$Lance = 1	Then
		For	$n = 0	To	UBound ($coListe) - 1
			If	$coListe[$n] <= ((UBound ($aLog) - 1) / $NbLignes) And	$coListe[$n] > 0	Then  FLancer ($coListe[$n])
		Next
		$Lance = 0
	Else
		FLancer ($compte)
	EndIf
	If	$fin = $GUI_CHECKED	Then	Exit
EndFunc
Func	FLancer ($compteBis = $compte)
	DesAct (1)
	$compteBis = ($compteBis - 1) * $NbLignes + 1
	If	StringInStr ($aLog[$compteBis + 1], "{TAB}") = 0	Then	Return	;vérif alakon, à faire pour la prochaine version ^^
	Local	$Clef = InputBox (@ScriptName & " - Code du compte " & $aLog[$compteBis], "Veuillez entrer la clef de " & $aLog[$compteBis]& " :", "", "°")
	If	@error = 1	Then
		DesAct ()
		Return
	EndIf
	Local	$NDCMDP = StringSplit ($aLog[$compteBis + 1], "{TAB}", 1)
	If	$Clef <> ""	Then
		$NDCMDP[1] = _StringEncrypt (0, $NDCMDP[1], $Clef)
		$NDCMDP[2] = _StringEncrypt (0, $NDCMDP[2], $Clef)
	EndIf
	If	MsgBox (0x51, @ScriptName, "Lancement de la fenêtre Dofus !" & @CRLF & "Cliquez sur Annuler pour fermer." & @CRLF & Message(), 2) <> 2	Then
		TrayTip (@Scriptname, "Lancement de la fenêtre Dofus.", 0)
		ShellExecute ($prgNom, "", $prgChemin)
		AutoItSetOption ("WinTitleMatchMode", 3)
		Do
			Sleep (200)
		Until	WinActive ("Dofus  ")	Or	WinActive ("Dofus - Opera")	Or	WinActive ("Dofus - Windows Internet Explorer")	Or	WinActive ("Dofus - Mozilla Firefox")
		AutoItSetOption ("WinTitleMatchMode", 1)
		WinSetTitle ("Dofus", "", "Dofus - " & $aLog[$compteBis])
		TrayTip ("","",0)
		Sleep (1000)
		Traytip (@ScriptName, "Veuillez placer votre curseur" & @CRLF & 'sur la zone "Compte Ankama".', 10)
		AutoItSetOption ("MouseCoordMode", 0)
		$posDof = WinGetClientSize ("Dofus - " & $aLog[$compteBis])
		Do
			$posCur = MouseGetPos ()
			Sleep(20)
		Until	(MouseGetCursor () = 5)	And	($posCur[0] < $posDof[0])	And	($posCur[1] < $posDof[1])	And	($posCur[0] > 0)	And	($posCur[1] > 0)	And	WinActive ("Dofus - " & $aLog[$compteBis])
		MouseClick ("left")
;~ Send ("^f")	;Mode "plein écran"
		Send ($NDCMDP[1], 1)
		Send ("{TAB}")
		Send ($NDCMDP[2], 1)
		AutoItSetOption ("MouseCoordMode", 1)
		TrayTip (@Scriptname, "Veuillez passer votre souris" & @CRLF & 'sur le bouton "OK".', 0)
		Do
			sleep (20)
			$cur = MouseGetPos ()
		Until	((MouseGetCursor () = 0)	And	(PixelGetColor ($cur[0], $cur[1]) = 0xFF9900))
		MouseClick ("left")
		TrayTip ("", "", 0)
	EndIf
	DesAct ()
	Return
EndFunc
Func	Message ()	;à inter-agir avec SkinDB.txt, avec la variable MessageFlood
	Switch	Random (0, 4, 1)
		Case	0
			Return	"(\__/)" & @CRLF & "( ' . ' )" & @CRLF & '(")_(")'
		Case	1
			Return	@CRLF & "Vous pouvez aussi aller jouer dehors," & @CRLF & "avec les papillons, les fleurs et les oiseaux."
		Case	2
			Return	""
		Case	3
			Return	@CRLF & "Ou patientez 2 secondes," & @CRLF & "que la fenêtre se ferme d'elle-même."
		Case	4
			Return	@CRLF & "La Vie est comme cette boîte de dialogue :" & @CRLF & "C'est quand elle se ferme qu'on arrive à l'essentiel."
	EndSwitch
EndFunc
Func	Fini ()
	$fin = GUICtrlRead ($CFini)
EndFunc
Func	Void ()
	MsgBox (80, @ScriptName, "L'objet cliqué (" & @GUI_CtrlId & ") n'a pas" & @CRLF & "d'action associée, désolée.")
EndFunc
Func	Quit ()
	GUIDelete ($fenBase)
	Exit
EndFunc
	;==========================Fonctions AutoIt 3 modifiées========================================
Func	_FileWriteToLine2 ($sFile, $iLine, $sText, $fOverWrite = 0)
	If	Not	FileExists ($sFile)	Then	FileWrite ($sFile, @CRLF)
	Local	$filtxt = FileRead ($sFile, FileGetSize ($sFile))
	$filtxt = StringSplit ($filtxt, @CRLF, 1)
	If	$filtxt[0]< $iLine	Then	ReDim	$filtxt[$iLine + 1]
	Local	$fil = FileOpen ($sFile, 2), $i
	For	$i = 1	To	UBound ($filtxt) - 1
		If	$i = $iLine	Then
			If	$fOverWrite = 1	Then
				If	$sText <> @CRLF	Then
					If	$i < UBound ($filtxt, 1) - 1	Then
						FileWrite ($fil, $sText & @CRLF)
					ElseIf	$i = UBound ($filtxt, 1) - 1	Then
						FileWrite ($fil, $sText) 
					EndIf
				Else
					If	$i < UBound ($filtxt, 1) - 1	Then
						FileWrite ($fil, $sText)
					EndIf
				EndIf
			EndIf
			If	$fOverWrite = 0	Then
				If	$i < UBound ($filtxt, 1) - 1	Then
					FileWrite ($fil, $sText & @CRLF)
					FileWrite ($fil, $filtxt[$i]& @CRLF)
				ElseIf	$i = UBound ($filtxt, 1) - 1	Then
					FileWrite ($fil, $sText & @CRLF)
					FileWrite ($fil, $filtxt[$i])
				EndIf
			EndIf
		ElseIf	$i < UBound ($filtxt, 1) - 1	Then
			FileWrite ($fil, $filtxt[$i]& @CRLF)
		ElseIf	$i = UBound ($filtxt, 1) - 1	Then
			FileWrite ($fil, $filtxt[$i])
		EndIf
	Next
	FileClose ($fil)
	Return	1
EndFunc	;==>_FileWriteToLine2
Func _FileWriteFromArray2 ($File, $a_Array, $i_Base = 0, $i_UBound = -1)
	Local	$hFile, $x
	If	IsString ($File)	Then
		$hFile = FileOpen ($File, 2)
	Else
		$hFile = $File
	EndIf
	If	$hFile = -1	Then	Return	SetError (1, 0, 0)
	If	$i_UBound < 1	Then	$i_UBound = UBound ($a_Array)
	$x = $i_Base
	Do
		FileWrite ($hFile, $a_Array[$x]& @CRLF)
		$x += 1
	Until	$x = $i_UBound
	FileWrite ($hFile, $a_Array[$i_UBound])
	If	IsString ($File)	Then	FileClose ($hFile)
EndFunc 	;==>_FileWriteFromArray2
Func	_FileReadToArray2 ($sFilePath, ByRef	$aArray)
	Local	$hFile
	$hFile = FileOpen ($sFilePath, 0)
	If	$hFile = -1	Then
		SetError (1)
		Return	0
	EndIf
	$aArray = StringSplit (StringStripCR (FileRead ($hFile, FileGetSize ($sFilePath))), @CRLF)
	FileClose ($hFile)
	Return	1
EndFunc	;==>_FileReadToArray2
Version fichier du skin : SkinDB.txt - 10.83 kB
Version texte du skin :
Code:
fenBase
	Type : Fenêtre
	contenu1 : @ScriptName
	largeur : $lFen
	hauteur : 19+50+$tFen*$Ht+30
	posx : -1
	-Police-Fen : ,,,Fixedsys
	posy : -1
	style : 0x70000
	-OnEvent : $GUI_EVENT_CLOSE,Quit

	Fichiers
		Type : Menu
		contenu1 : "Fichier"
		parenté : -1
		Positionnement : 0

		FNouv
			Type : S-Menu
			contenu1 : "Nouveau"
			parenté : $Fichiers
			Positionnement : 0
			Event : "ChargeLog"

		FCharge
			Type : S-Menu
			contenu1 : "Charger"
			parenté : $Fichiers
			Positionnement : 1
			Event : "ChargeLog"

		FLigneVide
			Type : S-Menu
			contenu1 : ""
			parenté : $Fichiers
			Positionnement : 2
			Event : "Void"

		FQuit
			Type : S-Menu
			contenu1 : "Quitter"
			parenté : $Fichiers
			Positionnement : 3
			Event : "Quit"

	Options
		Type : Menu
		contenu1 : "Options"
		parenté : -1
		Positionnement : 1

		OLog
			Type : Menu
			contenu1 : "Compte"
			parenté : $Options
			Positionnement : 0

			LLancer
				Type : S-Menu
				contenu1 : "Lancer !"
				parenté : $OLog
				Positionnement : 0
				Event : "Lance"

			LNouveau
				Type : S-Menu
				contenu1 : "Nouveau"
				parenté : $OLog
				Positionnement : 1
				Event : "FNouveau"

			LModifier
				Type : S-Menu
				contenu1 : "Modifier"
				parenté : $OLog
				Positionnement : 2
				Event : "FModifier"

			LSupprimer
				Type : S-Menu
				contenu1 : "Supprimer"
				parenté : $OLog
				Positionnement : 3
				Event : "FSupprimer"

		ORaccourcis
			Type : Menu
			contenu1 : "Raccourcis"
			parenté : $Options
			Positionnement : 1

			RNouveau
				Type : S-Menu
				contenu1 : "Nouveau"
				parenté : $ORaccourcis
				Positionnement : 0
				Event : "RModif"

			RCharge
				Type : S-Menu
				contenu1 : "Charger"
				parenté : $ORaccourcis
				Positionnement : 1
				Event : "RCharge"

			RModifier
				Type : S-Menu
				contenu1 : "Modifier"
				parenté : $ORaccourcis
				Positionnement : 2
				Event : "Void"

			RSupprime
				Type : S-Menu
				contenu1 : "Supprimer"
				parenté : $ORaccourcis
				Positionnement : 3
				Event : "RSuppre"

		:OSkin
			Type : Menu
			contenu1 : "Skins"
			parenté : $Options
			Positionnement : 2
			Event : "Void"

			SNouveau
				Type : S-Menu
				contenu1 : "Nouveau"
				parenté : $OSkin
				Positionnement : 0
				Event : "Void"

			SSauvegarder
				Type : S-Menu
				contenu1 : "Sauver"
				parenté : $OSkin
				Positionnement : 1
				Event : "Void"

			SModifier
				Type : S-Menu
				contenu1 : "Modifier"
				parenté : $OSkin
				Positionnement : 2
				Event : "Void"

			SCharger
				Type : S-Menu
				contenu1 : "Charger"
				parenté : $OSkin
				Positionnement : 3
				Event : "Void"

	:Aide
		Type : Menu
		contenu1 : "Aide"
		parenté : -1
		Positionnement : 3

		ATuto
			Type : S-Menu
			contenu1 : "Tutoriel"
			parenté : $Aide
			Positionnement : 0
			Event : "Void"

	Label
		Type : Label
		contenu1 : "Choisissez un compte à Logger :"
		posx : 1
		posy : -2
		largeur : -1
		hauteur : -1
		style : -1
		étendu : 0
		Event : "Void"

	Boutons
		Type : Groupe
		parenté : $fenBase

		Lancer
			Type : Bouton
			contenu1 : "Lancer !"
			posx : 150
			posy : $Ht/2+$Ht/2*$tFen
			largeur : 47
			hauteur : 25
			Event : "Lance"

		Multico
			Type : Checkbox
			contenu1 : "Multi"
			posx : 150
			posy : $Hligne+$Ht+$Ht/2*$tFen
			largeur : -1
			hauteur : $Hligne
			Resize : 8+768
			Etat : $multi
			Event : "FMultico"

		Modifier
			Type : Bouton
			contenu1 : "Modifier"
			posx : 150
			posy : 33+$tFen*$Ht
			largeur : 47
			hauteur : 25
			style : 0x8000
			Resize : 8+64+768
			Event : "FModifier"

		Nouveau
			Type : Bouton
			contenu1 : "Nouveau"
			posx : 1
			posy : 33+$tFen*$Ht
			largeur : -1
			hauteur : 25
			style : 0x8000
			Resize : 8+64+768
			Event : "FNouveau"

		Supprimer
			Type : Bouton
			contenu1 : "Supprimer"
			posx : 75
			posy : 33+$tFen*$Ht
			largeur : -1
			hauteur : 25
			style : 0x8000
			Resize : 8+64+768
			Event : "FSupprimer"

		CFini
			Type : Checkbox
			contenu1 : "Fermer le script après ce compte"
			posx : 15
			posy : $Hligne
			largeur : -1
			hauteur : 13
			Resize : 2+32+768
			Etat : $fin
			Event : "Fini"

		Ajoute
			Type : Bouton
			contenu1 : "Ajouter ->"
			posx : 275
			posy : 0
			largeur : -1
			hauteur : -1
			Event : "MAjoute"

		Retire
			Type : Bouton
			contenu1 : "<- Retirer"
			posx : 275
			posy : 27+Ubound($coListe)*$Ht
			largeur : -1
			hauteur : -1
			Event : "MRetire"

		Haut
			Type : Bouton
			contenu1 : "Monte"
			posx : 205
			posy : $Ht+$Ht*(UBound($CcoListe)-1)/2
			largeur : 40
			hauteur : -1
			Event : "MHaut"

		Bas
			Type : Bouton
			contenu1 : "Baisse"
			posx : 205
			posy : ($Ht-3)+$Ht+$Ht*(UBound($CcoListe)-1)/2
			largeur : 40
			hauteur : -1
			Event : "MBas"

		Surnoms
			Type : Radio
			contenu1 : $aLog[$compteBis*$NbLignes-1]&" ."
			posx : 5
			posy : 27+($compteBis-1)*$Ht
			largeur : 135
			hauteur : $Ht-3
			style : 0x2000
			Data : $aLog[$compteBis*$NbLignes-1]
			Resize : 2+32+512
			Event : "FRadio"

		ListeMulti
			Type : Checkbox
			contenu1 : $aLog[$coListe[$compteBis] * $NbLignes - 1]
			posx : 255
			posy : 27+$compteBis * $Ht

FenMod
	Type : Fenêtre
	contenu1 : @ScriptName & " - ajouter/modifier"
	largeur : 200
	hauteur : $HLigne*12
	posx : -1
	posy : -1
	style : -1
	étendu : -1
	-Parenté : $fenBase
	-Police-Fen : ,,,Fixedsys

	LabelSurnom
		Type : Label
		contenu1 : "Veuillez entrer un" & @CRLF & " pseudonyme :"
		posx : 1
		posy : 2
		largeur : 100
		hauteur : -1
		style : -1
		étendu : -1
		Event : "Void"

	LabelClef
		Type : Label
		contenu1 : @CRLF&"Clef de cryptage :"
		posx : 120
		posy : 0
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1
		Event : "Void"

	LabelNDC
		Type : Label
		contenu1 : "Veuillez entrer le nom de compte Dofus :"
		posx : 0
		posy : $HLigne*4
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1
		Event : "Void"

	LabelMDP
		Type : Label
		contenu1 : "Veuillez entrer le mot de pass associé :"
		posx : 0
		posy : $HLigne*7
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1
		Event : "Void"

	InputPseudo
		Type : Input
		contenu1 : $aLog[$compteTer]
		posx : 2
		posy : $Hligne*2
		largeur : 125
		hauteur : -1
		style : -1
		étendu : -1

	InputClef
		Type : Input
		contenu1 : ""
		posx : 149
		posy : $Hligne*2
		largeur : 50
		hauteur : -1
		style : -1
		étendu : -1

	InputNDC
		Type : Input
		contenu1 : ""
		posx : 2
		posy : $Hligne*5
		largeur : 196
		hauteur : -1
		style : -1
		étendu : -1

	InputMDP
		Type : Input
		contenu1 : ""
		posx : 2
		posy : $Hligne*8
		largeur : 196
		hauteur : -1
		style : -1
		étendu : -1

	BValide
		Type : Bouton
		contenu1 : "Valider"
		posx : 2
		posy : $Hligne*10
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1
		Event : "ModModifier"

	BAnnule
		Type : Bouton
		contenu1 : "Annuler"
		posx : 100
		posy : $Hligne*10
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1
		Event : "ModAnnule"

FenRac
	Type : Fenêtre
	contenu1 : @ScriptName
	largeur : 170
	hauteur : 5*$Ht+$Hligne
	style : -1
	étendu : -1
	-parenté : $fenBase
	-Police-Fen : ,,,Fixedsys

	LabelSansNom
		Type : Label
		contenu1 : "Sélectionnez le script :"
		posx : 0
		posy : 0
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1
		Event : "Void"

	IScript
		Type : Input
		contenu1 : @ScriptFullPath
		-contenu2 : $r[0]
		posx : 5
		posy : $Hligne
		largeur : 100
		hauteur : -1
		style : -1
		étendu : -1

	BSParc
		Type : Bouton
		contenu1 : "Parcourir"
		posx : 110
		posy : $Hligne
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1
		Event : "ParcoureScript"

	LabelSansNom2
		Type : Label
		contenu1 : "Sélectionnez le log :"
		posx : 0
		posy : $Ht+$Hligne
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1
		Event : "Void"

	ILog
		Type : Input
		contenu1 : $logChemin
		contenu2 : StringMid($r[2],3,StringInStr($r[2],'"',2,2)-3)
		posx : 5
		posy : $Ht+2*$Hligne
		largeur : 100
		hauteur : -1
		style : -1
		étendu : -1

	BLParc
		Type : Bouton
		contenu1 : "Parcourir"
		posx : 110
		posy : $Ht+2*$Hligne
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1
		Event : "ParcoureLog"

	LabelSansNom3
		Type : Label
		contenu1 : "Entrez les n° des comptes :"
		posx : 0
		posy : 2*$Ht+2*$Hligne
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1
		Event : "Void"

	IComptes
		Type : Input
		contenu1 : $compte
		contenu2 : StringMid($r[2],StringInStr($r[2],'"',2,2)+2)
		posx : 5
		posy : 2*$Ht+3*$Hligne
		largeur : 100
		hauteur : -1
		style : -1
		étendu : -1

	RBValide
		Type : Bouton
		contenu1 : "Valider"
		posx : 0
		posy : 3*$Ht+3*$Hligne
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1
		Event : "RValide"

	RBAnnule
		Type : Bouton
		contenu1 : "Annuler"
		posx : 110
		posy : 3*$Ht+3*$Hligne
		largeur : -1
		hauteur : -1
		style : -1
		étendu : -1
		Event : "RFinir"

MessageFlood
	Type : 5
	contenu1 : "(\__/)" & @CRLF & "( ' . ' )" & @CRLF & '(")_(")'
	contenu2 : @CRLF & "Vous pouvez aussi aller jouer dehors," & @CRLF & "avec les papillons, les fleurs et les oiseaux."
	contenu3 : ""
	contenu4 : @CRLF & "Ou patientez 2 secondes," & @CRLF & "que la fenêtre se ferme d'elle-même."
	contenu5 : @CRLF & "La Vie est comme cette boîte de dialogue :" & @CRLF & "C'est quand elle se ferme qu'on arrive à l'essentiel."

Fenêtre :
	Type : Fenêtre
	contenu1 : 
	contenux :
	largeur : 
	hauteur : 
	posx : 
	posy : 
	style : 
	étendu : 
	parenté : 
Contrôle :
	Type : 
	contenu1 : 
	contenux : 
	posx : -1
	posy : -1
	largeur : -1
	hauteur : -1
	style : -1
	étendu : -1
	Data : 
	Resize : 
	Etat : 
Menu :
	Type : 
	contenu1 : 
	contenux :
	parenté : 
	Positionnement : 
	Etat : 
Flood :
	Type : Nombre de messages
	contenu1 : 
	contenux : 
Global :
	Type : $SkinBase[0]
		Curfen, Fenêtre, Fond-F, Ic-F, Police-Fen, OnEvent, State, Stylfaen
		Avi, Bouton, Calendrier, Checkbox, Combo, Dat'action, Editeur, Graphisme, Groupe, Icône, Image, Input, Label, Liste, Menu, MiniMenu, Radio, S-Menu
		Coul, D-Coul, D-Fond-C, Data, Etat, Event, Fond-C, Graphip'tit, Im-C, Police-C, Pos, Resize, Restyle, Titruc
		Nombre déterminant de messages floodesques (cas unique) -> Rand (0 à Nombre-1, 1)
		[Modificateur de GUI] : Paramètre 1,paramètre 2,..
	contenu1 : Lié à conditions $SkinBase[1]
	contenu2 : Lié à conditions.. etc $SkinBase[1] (aussi)
	posx, posy, largeur, hauteur : Chiffres $SkinBase[2 à 5]
	style, étendu : 0xChiffre $SkinBase[6 et 7]
	parenté : Chiffre/Nom de variable $SkinBase[8] ou $SkinBase[3] pour un élément de menu
	Positionnement : Chiffre $SkinBase[4] spécifique aux menus
À noter que le fichier de skin ne peut s'appeler que "skinDB.txt", et doit être présent dans le même répertoire que le script. (Oui, ça sera bientôt modifié. ^^)

Améliorations depuis la 1_9b :
-> Résolution du bug de suppression d'une entrée dans la liste de Multi
-> Il est maintenant possible de changer de manière indépendante le nom de compte et le mot de pass du compte associé à un surnom. Ca écrase simplement les anciennes informations, et il est conseillé d'utiliser la même Clef pour le Ndc et le Mdp. /!\ Seule la personne qui a entré les infos à l'origine peut savoir si c'est le cas.
-> Les informations de skin sont récupérées depuis un fichier externe (SkinDB.txt), ce qui allège le script et la programmation de celui-ci.

Prévisions météorologiques d'améliorations :
-> Finalisation de la v1_10 en fournissant un module de skinnage à l'utilisateur
-> Meilleure prise en charge de la fermeture des fenêtres du script
-> Mise en relation des phrases de flood (dans la fenêtre "Lancement de la fenêtre Dofus" + message-flood) avec le fichier de skin (pour les changer facilement)
Elles sont déjà présentes dans le-dit fichier, mais ne sont pas utiles pour l'instant.
-> Permettre un chemin (et un nom) variable pour le fichier de skin

En ce qui concerne la suite (vi, je vois loin..), ça vous intéresserait d'avoir ça :
-> Permettre de changer une Clef de cryptage des informations Ndc et Mdp (il serait indispensable de connaître la clef de base pour la changer) ?
-> Un script compilé "clef en main", qui contiendrait directement le fichier de skin basique (pour n'avoir qu'un unique fichier à télécharger) ?
-> Des fonctions aléatoires débiles (type qui réagit à la date : le premier avril, ouvre une pop-up "Poisson d'avril !§§") dans le fichier de skin ? (sans atteinte possible à la sécurité, encore une fois.)

Et tout le reste, auquel vous penserez, et que vous pourriez souhaiter ! (Demandez-moi l'impossible, je pourrai le réaliser. Vive l'informatique ! )

Za.

P.S : Après écriture de mon pavé, je vois que j'ai oublié de donner le mode d'emploi du fichier de Skin.
Donc, ça fonctionne ainsi :
[Nom de variable] c'est la variable qui permet d'interagir avec le contenu. Pas facile à expliquer, mais c'est "l'adresse" de la boîte visée.
(tabulation)[message] : [valeur] la tabulation permet au script de se retrouver dans les opérations, le message sera type de modification à y porter, et la valeur sera la valeur appliquée à la modification.
En fin de fichier, toutes les valeurs utilisables sont renseignées.
En attendant la fonction qui vous permettra de faire ça facilement, je vous renvoie à la doc de Auto-It partie "GuiCtrlCreate[Objet]", pour plus de détails.
Exemple :
Code:
fenBase
	Type : Fenêtre
	posx : 12
Fera apparaître la fenêtre de base du script au pixel n° 12 (depuis le bord gauche de l'écran, la "position en abscisse").
Les valeurs de "-1" sont un moyen de dire "garder la valeur par défaut".
Hello Dyno / Za !

J'ai testé ton truc, il fonctionne plutôt bien, mais comme l'a fait remarqué Shuggah c'est quand même une belle usine à gaz pour pas grand chose :s Le fait d'obliger a rentrer la clef, à viser soit même la fenêtre, le design un peu chargé (la fenêtre fait tout de suite 4km de long pour une dizaine de comptes), je suis revenu à mon lanceur perso assez rapidement :s

En fait pour le principe de fonctionnement il est parfait tel que tu l'as conçu pour toi, mais tes besoins sont pas trop ceux pour la plupart des joueurs (90% préféreraient avoir un système crypté mais sans avoir à taper un pass à chaque log), et question ergonomie / design, je le trouve un peu trop simpliste, même si derrière tu as un système de skin, ça restera un groupe de radiobox qui prendra une trop grande place si tu as un trop grand nombre de comptes (qui est justement la raison d'être de ton prog, faciliter le multicompte).

Ce message n'est pas un "c'est trop nul trop pourri", juste un ressenti de ma part. Je voulais aussi savoir si tu avais avancé la release 1.10 depuis (dernier message mi-mai).

Tchô !!!

ZDS
En passant je vous l'annomce ici au cas ou vous n'ayez pas lu mon compte rendu de la table ronde 2.0 de la convention :

Il ne sera pas possible de faire ce genre d'outils en tant que module du client 2.0.
Mais toujours possible via du scripting externe comme c'est le cas actuellement
Edit @drallieivEHD : Oké, donc je garde mon DofusLog en travaux.

----
Oui, j'ai avancé la prog, mais pour le moment, je l'ai pas mit à disposition.
Ca ressemble à ça, maintenant (chez moi) :
http://photomaniak.com/upload/out.php/i737562_Dofuslogv110Bta4d.png
(Y'a des images maintenant, mais ce n'est pas encore bien terminé pour leur affichage.)

J'avoue, je travaille d'abord pour moi, et mes besoins sont très particuliers.
J'aimerais bien dans un futur plus ou moins proche avoir fini mon interface utilisateurs (je m'entraîne sur le "Assistez-Toi !" pour ça, huhu ^^), et permettre une personnalisation totale des commandes.

Pour la suite, j'ai prévu aussi (et ça se rapproche, quand j'ai le temps d'y toucher ^^) de faire la connexion en parallèle des comptes avec la liste multico.

Je vais voir à proposer un système de "clef auto" : rentrer la clef une seule fois, qui sera utilisée pour tous les comptes ensuite... Bref, au lancement du premier compte : "Veuillez entrer la clef .." (etc), et si l'option "clef auto" est enclenchée, les autres comptes seront testés par défaut avec cette clef.
Je ne sais pas si c'est trop embrouillé à expliquer, mais en gros, ça ne change pas le niveau de sécurité, tout en soulageant l'utilisateur.
Bref, je note à ajouter. ^^

Juste pour avoir un aperçu de la version 1_10bêta4d :
Script : DofusLog-v1_10Bêta4d.au3 - 30.92 kB
Skin : SkinDB.txt - 11.15 kB
Et le petit coeur (très important !) : Coeur2.bmp - 303.8 kB
Les 3 fichiers devront être placés de préférence dans le même répertoire (je n'ai pas encore géré le changement de dossier, désolée.. ), et le fonctionnement du script reste inchangé.

Juste pour faire plaisir à ZDS, j'ai ajouté :
Plutôt que de passer la souris sur le bouton orange "OK", le script fait directement un "tab"+"entrée", donc voilà, c'est "mieux".
(Mais j'aime moins. Et vous, vous pensez quoi de cette amélioration ?)

Za.
Fil fermé
  • »
 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés