Code : Tout sélectionner
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <File.au3>
#include <Array.au3>
Global $actualNumber = 0, $word, $floor, $notEnoughWord = True, $oneWord = True, $table, $file, $lastModifiedHour = @HOUR, $lastModifiedMin = @MIN, $lastModifiedSec = @SEC, $motSuivant, $CLICGOK
$desktopWidth = @DesktopWidth - 210
$desktopHigh = 10
$buttonSize = 20
$buttonX = 80
$transparence = 200
$file = "test.txt"
If Not FileExists($file) Then
MsgBox(16, "Fichier manquant", "Impossible de lancer l'application car Le txt n'existe pas!")
Exit
EndIf
$GUI = GUICreate("test", 200, 100, $desktopWidth, $desktopHigh, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW)
WinSetTrans($GUI, "", $transparence)
$labelHeure = GUICtrlCreateLabel(@Hour&":"&@MIN, 170, 0)
$label1 = GUICtrlCreateLabel("", 10, 15, 185, 25)
$label2 = GUICtrlCreateLabel("", 10, 40, 185, 25)
;$prononciation = GUICtrlCreateLabel("", 10, 65, 180, 20)
$Suivant = GUICtrlCreateButton(">", 150, $buttonX, $buttonSize, $buttonSize, $BS_ICON)
GUICtrlSetImage(-1, "icones/next.ico", "next", 0)
GUICtrlSetState(-1, $GUI_HIDE)
$fermerAppli = GUICtrlCreateButton("x", 175, $buttonX, $buttonSize, $buttonSize, $BS_ICON)
GUICtrlSetImage(-1, "icones/arret.ico", "arret", 0)
GUICtrlSetState(-1, $GUI_HIDE)
$delLine = GUICtrlCreateButton("del", 125, $buttonX, $buttonSize, $buttonSize, $BS_ICON)
GUICtrlSetImage(-1, "icones/delete.ico", "delete", 0)
GUICtrlSetState(-1, $GUI_HIDE)
$Icon1 = GUICtrlCreateIcon("icones/right.ico", "1", 3, 20, 13, 13)
$Icon2 = GUICtrlCreateIcon("icones/right.ico", "2", 3, 45, 13, 13)
OvertureAppli()
While 1
Heure()
Hide()
FileChange()
sleep(10)
WEnd
;########################################################################
;########################################################################
;FUNCTION:
Func Hide()
Local $cursorInfo = GUIGetCursorInfo($GUI)
Local $cursor = MouseGetPos()
While $cursorInfo[0] >= 0 And $cursorInfo[0] <= 200 And $cursorInfo[1] >= 0 And $cursorInfo[1] <= 100
If GUICtrlGetState($fermerAppli) = 96 Then
GUICtrlSetState($fermerAppli, $GUI_SHOW)
If $oneWord = False Then
GUICtrlSetState($fermerAppli, $GUI_SHOW)
GUICtrlSetState($Suivant, $GUI_SHOW)
EndIf
If $notEnoughWord = False Then
GUICtrlSetState($delLine, $GUI_SHOW)
EndIf
EndIf
$Msg = GUIGetMsg(1)
$cursorInfo = GUIGetCursorInfo()
If Not @error Then
If $cursorInfo[2] = 1 And ($cursorInfo[4] = 0 Or $cursorInfo[4] = $labelHeure Or $cursorInfo[4] = $label1 Or $cursorInfo[4] = $label2 Or $cursorInfo[4] = $Icon1 Or $cursorInfo[4] = $Icon2) Then
$CLICGOK = 1
Else
$CLICGOK = 0
EndIf
EndIf
Select
Case $Msg[0] = $GUI_EVENT_CLOSE Or $Msg[0] = $fermerAppli
FermerAppli()
Case $CLICGOK = 1
Do
$cursor = MouseGetPos()
WinMove($GUI, "", $cursor[0]-$cursorInfo[0]-1, $cursor[1]-$cursorInfo[1]-1)
Until GUIGetMsg() = $GUI_EVENT_PRIMARYUP
$CLICGOK = 0
Case $Msg[0] = $Suivant
word()
Case $Msg[0] = $delLine
deleteLine()
EndSelect
Heure()
$cursorInfo = GUIGetCursorInfo($GUI)
WEnd
GUICtrlSetState($Suivant, $GUI_HIDE)
GUICtrlSetState($fermerAppli, $GUI_HIDE)
GUICtrlSetState($delLine, $GUI_HIDE)
EndFunc
Func OvertureAppli()
WinSetTrans($GUI, "", 0)
GUISetState()
For $trans = 0 To $transparence Step 4
WinSetTrans($GUI, "", $trans)
sleep(5)
Next
EndFunc
Func FermerAppli()
For $trans = $transparence To 0 Step -4
WinSetTrans($GUI, "", $trans)
sleep(5)
Next
GUIDelete()
Exit
EndFunc
Func Heure()
$String = StringRight(GUICtrlRead($labelHeure), 2)
If $String <> @MIN Then
GUICtrlSetData($labelHeure, @Hour&":"&@MIN)
EndIf
EndFunc
Func word()
Local $font = "Bookman Old Style Italique"
Do
$random = Random(1, $table[0]+1)
$floor = Floor($random)
Until $floor <> $actualNumber And $table[$floor] <> ""
$actualNumber = $floor
$word = StringSplit($table[$floor], "*", 1)
For $i=1 To 2 Step 1
If $i=1 Then
$langWord = $label1
Else
$langword = $label2
EndIf
If StringLen($word[$i]) > 20 Then
GUICtrlSetFont($langWord, 10, -1, -1, $font)
ElseIf StringLen($word[$i]) > 18 Then
GUICtrlSetFont($langWord, 11, -1, -1, $font)
ElseIf StringLen($word[$i]) > 16 Then
GUICtrlSetFont($langWord, 12, -1, -1, $font)
ElseIf StringLen($word[$i]) > 15 Then
GUICtrlSetFont($langWord, 13, -1, -1, $font)
Else
GUICtrlSetFont($langWord, 15, -1, -1, $font)
EndIf
GUICtrlSetData($langWord, " "&$word[$i])
Next
EndFunc
Func deleteLine()
_ArrayDelete($table, $actualNumber)
If Not @error Then
_FileWriteFromArray($file, $table, 1)
Else
Msgbox(16, "ERREUR", "Erreur lors de la suppression du mot!"&@CRLF&"erreur: " & @error, 5)
EndIf
EndFunc
Func readFile()
If Not _FileReadToArray($file,$table) Then
MsgBox(16,"ERREUR LECTURE FICHIER", "Erreur lors de la lecture du fichier"&@CRLF&"Le fichier est vide! Veuillez ajouter des mots.", 5)
Exit
EndIf
word()
If $table[0] = 1 Then
GUICtrlSetState($motSuivant, $GUI_HIDE)
GUICtrlSetState($delLine, $GUI_HIDE)
msgbox(48, "ATTENTION", "Il ne reste qu'un seul mot! Vous ne pouvez "&@CRLF&"donc ni supprimer, ni changer de mot!"&@CRLF&"Veuillez y ajouter des mots!", 10)
$oneWord = True
Else
$oneWord = False
If $table[0] = 2 Then
GUICtrlSetState($delLine, $GUI_HIDE)
msgbox(48, "ATTENTION", "Il n'y a pas assez de mot pour en supprimer!"&@CRLF&"Veuillez ajouter des mots!", 5)
$notEnoughWord = True
Else
$notEnoughWord = False
EndIf
EndIf
EndFunc
Func FileChange()
$modifiedFile = FileGetTime($file, 0)
If Not @error Then
If $modifiedFile[3] <> $lastModifiedHour Or $modifiedFile[4] <> $lastModifiedMin Or $modifiedFile[5] <> $lastModifiedSec Then
readFile()
$lastModifiedHour = $modifiedFile[3]
$lastModifiedMin = $modifiedFile[4]
$lastModifiedSec = $modifiedFile[5]
EndIf
EndIf
EndFunc