#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=..\..\..\..\..\..\..\Pictures\image\Ico+Dialle.ico #AutoIt3Wrapper_Outfile=Dialle.exe #AutoIt3Wrapper_Outfile_x64=Dialle (x64).exe #AutoIt3Wrapper_UseUpx=n #AutoIt3Wrapper_Compile_Both=y #AutoIt3Wrapper_Res_Description=Logiciel de T'Chat Ordinateur à Ordinateur par Internet #AutoIt3Wrapper_Res_Fileversion=1.5.0.2 #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y #AutoIt3Wrapper_Res_ProductVersion=1.5 #AutoIt3Wrapper_Res_LegalCopyright=Legal Copiright 2012 #AutoIt3Wrapper_Res_SaveSource=y #AutoIt3Wrapper_Res_Language=1036 #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker #AutoIt3Wrapper_Res_Field=Créateur:|Bataille Lionel #AutoIt3Wrapper_Add_Constants=n #AutoIt3Wrapper_Run_Obfuscator=y #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ; *** Start added by AutoIt3Wrapper *** #include ; *** End added by AutoIt3Wrapper *** #cs ---------------------------------------------------------------------------- AutoIt Version : 3.3.8.1 Auteur: Bataille Lionel Fonction du Script : T'Chat ordinateur a ordinateur par TCP, en option une voix comuniquant télécharger a partir de Google Traduction. #ce ---------------------------------------------------------------------------- TCPStartup() If @error Then MsgBox(0,"Erreur","Une Erreur est survenue nous sommes désolé de se dérangement") Exit EndIf #include #include #include #include #include #include #include #include #include #include #include ;~ Définie un nom d'utilisateur si il n'y en na pas un déjà enregistré $SearchN = IniRead("Conf.INI","CONF","Name","Not") While 1 If $SearchN = "Not" Or $SearchN = "" Then $NomUti = InputBox("Information","Entrez un nom d'utilisateur - Cela permet de savoir Qui est la personne qui communique ",""," M20") If Not @error Then If $NomUti <> "" Then IniWriteSection("Conf.INI","CONF","Name="&$NomUti) $SearchN = $NomUti ExitLoop EndIf ElseIf @error Then Exit EndIf Else ExitLoop EndIf WEnd ;~ On démarre les services et déclare les variables $comter = 0 $comterChex = 0 $GuiT = 0 Global $szIPADDRESS = _GetIP() $nPORT = 49562 Global $MainSocket, $ConnectedSocket = -1, $szData Global $recv Global $DszIPADDRESS ;~ On creer l'interface graphique en mode événementiel Opt("GUIOnEventMode", 1) #Region ### START Koda GUI section ### FormPrincipal Global $Form1 = GUICreate("Dialle - "&$SearchN, 808, 464, -1, -1) GUISetFont(10, 800, 0, "Comic Sans MS") ;~ Définie le fond suivant se que l'utilisateur avait mis au paravant $Couleur = IniRead("Conf.INI","THEME","Theme","Not") If $Couleur = "BleuClaire" Or $Couleur = "Bleu" Then GUISetBkColor(0x00FFFF) ElseIf $Couleur = "BleuFoncé" Then GUISetBkColor(0x0000FF) ElseIf $Couleur = "Rouge" Then GUISetBkColor(0xFF0000) ElseIf $Couleur = "Vert" Then GUISetBkColor(0x00FF00) ElseIf $Couleur = "Jaune" Then GUISetBkColor(0xFFFF00) ElseIf $Couleur = "Rose" Then GUISetBkColor(0xFF00FF) ElseIf $Couleur = "Blanc" Or $Couleur = "Default" Then GUISetBkColor(0xFFFFFF) Else GUISetBkColor(0xFFFFFF) EndIf Global $MenuItem4 = GUICtrlCreateMenu("Liste d'Ami(s)") Global $MenuItem5 = GUICtrlCreateMenuItem("Enregistrer un nouvelle ami", $MenuItem4, -1) GUICtrlSetOnEvent(-1, "MenuItem5Click") Global $MenuItem7 = GUICtrlCreateMenuItem("Supprimer un ami", $MenuItem4, -1) GUICtrlSetOnEvent(-1, "MenuItem7Click") Global $MenuItem8 = GUICtrlCreateMenu("Préférence") Global $MenuItem9 = GUICtrlCreateMenuItem("Théme", $MenuItem8) GUICtrlSetOnEvent(-1, "MenuItem9Click") Global $MenuItem10 = GUICtrlCreateMenuItem("Changer le nom d'utilisateur", $MenuItem8) GUICtrlSetOnEvent(-1, "MenuItem10Click") GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close") GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize") GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore") Global $Group1 = GUICtrlCreateGroup("Information ", 8, 0, 217, 97) Global $Label1 = GUICtrlCreateLabel("Votre Ip : "&$szIPADDRESS&" ("&$SearchN&")", 16, 24, 199, 23) Global $Label2 = GUICtrlCreateLabel("Connextion : Déconnecter", 16, 72, 201, 23) Global $Label3 = GUICtrlCreateLabel("Connecté à : Personne", 16, 48, 205, 23) GUICtrlCreateGroup("", -99, -99, 1, 1) Global $Group2 = GUICtrlCreateGroup("Connextion ", 232, 0, 377, 65) Global $Label4 = GUICtrlCreateLabel("Ip du destinnater :", 240, 24, 128, 23) Global $IPAddress1 = _GUICtrlIpAddress_Create($Form1, 368, 24, 138, 23) _GUICtrlIpAddress_Set($IPAddress1, "0.0.0.0") Global $Button1 = GUICtrlCreateButton("Se connecter", 512, 24, 91, 25) GUICtrlSetCursor (-1, 0) GUICtrlSetOnEvent(-1, "Button1Click") GUICtrlCreateGroup("", -99, -99, 1, 1) Global $Group3 = GUICtrlCreateGroup("Message Reçue ", 8, 104, 601, 153) Global $Edi1 = GUICtrlCreateEdit("", 16, 128, 585, 121, BitOR($GUI_SS_DEFAULT_EDIT,$ES_READONLY)) GUICtrlSetData(-1, "") GUICtrlCreateGroup("", -99, -99, 1, 1) Global $Group4 = GUICtrlCreateGroup("T'Chat ", 8, 256, 601, 185) Global $Edite1 = GUICtrlCreateEdit("", 16, 280, 585, 121, BitOR($GUI_SS_DEFAULT_EDIT,$ES_READONLY)) GUICtrlSetData(-1, "") Global $Inpute1 = GUICtrlCreateInput("", 16, 408, 497, 27) GUICtrlSetCursor (-1, 5) Global $Buttone1 = GUICtrlCreateButton("Envoyer", 520, 408, 75, 25) GUICtrlSetOnEvent(-1, "Buttone1Click") GUICtrlSetCursor (-1, 0) GUICtrlCreateGroup("", -99, -99, 1, 1) Global $Option = GUICtrlCreateGroup("Option", 232, 64, 377, 49) Global $Checkbox1 = GUICtrlCreateCheckbox("Reception de Message par voix robot", 240, 88, 345, 17) GUICtrlSetOnEvent(-1, "CheckClick") GUICtrlCreateGroup("", -99, -99, 1, 1) Global $Group5 = GUICtrlCreateGroup("Connecté ", 616, 56, 185, 193) Global $List1 = GUICtrlCreateList("", 624, 80, 169, 175, BitOR($LBS_NOTIFY,$LBS_SORT,$WS_VSCROLL)) GUICtrlSetData(-1, "") GUICtrlSetCursor (-1, 0) GUICtrlCreateGroup("", -99, -99, 1, 1) Global $Group6 = GUICtrlCreateGroup("Hors-Ligne ", 616, 248, 185, 193) Global $List2 = GUICtrlCreateList("", 624, 272, 169, 175, BitOR($LBS_NOTIFY,$LBS_SORT,$WS_VSCROLL)) GUICtrlCreateGroup("", -99, -99, 1, 1) Global $Group7 = GUICtrlCreateGroup("Memo ", 616, 0, 185, 57) $Memo = IniRead("Conf.INI","MEMO","Memo","") Global $Input2 = GUICtrlCreateInput($Memo, 624, 24, 169, 27) GUICtrlSetOnEvent(-1, "Input2Change") Connextion() GUISetState(@SW_SHOW) GUICtrlSetState($Group4,$GUI_DISABLE) GUICtrlSetState($Edite1,$GUI_DISABLE) GUICtrlSetState($Inpute1,$GUI_DISABLE) GUICtrlSetState($Buttone1,$GUI_DISABLE) #EndRegion ### END Koda GUI section ### ;~ On attent une connextion ou un message While 1 If Sleep(5000) Then $ReadSec = IniReadSection("Conf.INI","LIST") GUICtrlSetData($List1,"") GUICtrlSetData($List2,"") For $i = 1 to $ReadSec[0][0] $ValeurC = $ReadSec[$i][1] $CleC = $ReadSec[$i][0] If Ping($ValeurC, 500) <> 0 Then GUICtrlSetData($List1,@CRLF&$CleC&"("&$ValeurC&")") Else GUICtrlSetData($List2,@CRLF&$CleC) EndIf Next EndIf If GUICtrlGetState($Buttone1) = $GUI_ENABLE And $GuiT <> 1 Then $GuiT = 1 Global $Form1_AccelTable[1] = ["{ENTER}", $Buttone1] GUISetAccelerators($Form1_AccelTable) EndIf If $ConnectedSocket = -1 Then $ConnectedSocket = TCPAccept($MainSocket) Else $recv = TCPRecv($ConnectedSocket, 2048) If @error Then MsgBox(0, "Erreur 2", "Erreur de données reçues !") Form1Close() EndIf If $recv <> "" Then If GUICtrlRead($Checkbox1) = 1 Then ;~ Si l'option du chexbox est 'on' alors on utilise la voix, mais on rajoute le message quand méme dans l'edit car si le message et trop long la voix ne la liras pas. GUICtrlSetData($Edi1,$recv & @CRLF & GUICtrlRead($Edi1)) GUICtrlSetData($Edite1,$recv & @CRLF & GUICtrlRead($Edite1)) $Data = _URIEncode($recv) InetGet("http://translate.google.com/translate_tts?ie=UTF-8&tl=fr&q=" & $Data,@TempDir & "\temp.mp3",1) $sound = _SoundOpen(@TempDir & "\temp.mp3") _SoundPlay($sound,1) _SoundClose($sound) ElseIf GUICtrlRead($Checkbox1) <> 1 Then GUICtrlSetData($Edi1,$recv & @CRLF & GUICtrlRead($Edi1)) GUICtrlSetData($Edite1,$recv & @CRLF & GUICtrlRead($Edite1)) EndIf EndIf EndIf WEnd ;~ Cache la fenétre Func Forme1Close() GUISetState(@SW_HIDE) EndFunc ;~ Minimise la fenétre Func Forme1Minimize() GUISetState(@SW_MINIMIZE) EndFunc ;~ Restore la fenétre Func Forme1Restore() GUISetState(@SW_RESTORE) EndFunc #cs -------------------------------------------------------------------------------------- Boutton de connextion : Reçoie l'ip entré par l'utilisateur et la teste avec un ping, | si il n'y a aucunne réponse il ne se connecte pas. | #ce -------------------------------------------------------------------------------------- Func Button1Click() $DszIPADDRESS = _GUICtrlIpAddress_Get($IPAddress1) If $DszIPADDRESS <> "" Then If Ping($DszIPADDRESS, 250) <> 0 Then $ConnectedSocket = TCPConnect($DszIPADDRESS, $nPORT) If @error Then TCPCloseSocket($ConnectedSocket) MsgBox(0, "Erreur 3", "Erreur de connexion au serveur,vous pouvez réesayer !"&@CRLF&@error) ElseIf Not @error Then GUICtrlSetData($Label2,"Connextion : Connecter") GUICtrlSetState($Label3,"Connecté à: "&$DszIPADDRESS) GUICtrlSetState($Group4,$GUI_ENABLE) GUICtrlSetState($Edite1,$GUI_ENABLE) GUICtrlSetState($Inpute1,$GUI_ENABLE) GUICtrlSetState($Buttone1,$GUI_ENABLE) EndIf Else MsgBox(0,"Connextion","Aucun réponse.") EndIf _GUICtrlIpAddress_Set($IPAddress1,"0.0.0.0") EndIf EndFunc #cs -------------------------------------------------------------------------------------- Boutton d'envoie de message : Envoie un message | #ce -------------------------------------------------------------------------------------- Func Buttone1Click() $szData = GUICtrlRead($Inpute1) If $szData <> "" Then $szData = $szIPADDRESS&"("&$SearchN&")"&" > " & $szData TCPSend($ConnectedSocket, $szData) If Not @error Then GUICtrlSetData($Edite1,$szData & @CRLF & GUICtrlRead($Edite1)) GUICtrlSetData($Inpute1,"") ElseIf @error Then MsgBox(0, "Erreur 4", "Erreur d'Envoie,vous pouvez réesayer !"&@CRLF&@error) EndIf EndIf EndFunc ;~ Ferme tous Func Form1Close() TCPSend($ConnectedSocket, $szIPADDRESS&"("&$SearchN&")"&" A quitter.") If $ConnectedSocket <> -1 Then TCPCloseSocket($ConnectedSocket) EndIf TCPShutdown() Exit EndFunc ;~ Minimise la fenétre Func Form1Minimize() GUISetState(@SW_MINIMIZE) EndFunc ;~ Restore la fenétre Func Form1Restore() GUISetState(@SW_RESTORE) EndFunc ;~ Fonction utiliser pour permettre les caractéres spéciaux a étre pris en compte par la voix robot Func _URIEncode($sData) ; Prog@ndy Local $aData = StringSplit(BinaryToString(StringToBinary($sData,4),1),"") Local $nChar $sData="" For $i = 1 To $aData[0] ConsoleWrite($aData[$i] & @CRLF) $nChar = Asc($aData[$i]) Switch $nChar Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126 $sData &= $aData[$i] Case 32 $sData &= "+" Case Else $sData &= "%" & Hex($nChar,2) EndSwitch Next Return $sData EndFunc ;~ Enregistre un nouvel ami Func MenuItem5Click() $Nom = InputBox("Ajout","Entrer le nom de votre amis") If Not @error Then ; Si on n'appuie pas sur le bouton cancel on continue $NIp = InputBox("Ajout","Entrer l'IP de votre amis") If Not @error Then IniWrite("Conf.INI","LIST",$Nom,$NIp) MsgBox(0,"Ajout","Votre amis a bien était enregistrer") EndIf EndIf $Nom = "" $NIp = "" EndFunc ;~ Suprime un ami de la liste des enregistré Func MenuItem7Click() $ReadSec = IniReadSection("Conf.INI","LIST") $Sup = InputBox("Supréssion","Entrer le nom de la personne que vous voulez suprimmer") If Not @error Then For $i = 1 To $ReadSec[0][0] ; on s'apprête à lire toutes les lignes de la section $Cle = $ReadSec[$i][0] $Valeur = $ReadSec[$i][1] If $Sup = $Cle And $Cle <> "" Then $T = 1 $accor = MsgBox(4,"Supréssion","Êtes vous sur de vouloir suprimmer "&$Cle&" ?") If $accor = 6 Then IniDelete("Conf.INI","LIST",$Cle) EndIf EndIf Next If $T <> 1 Then MsgBox(0,"Information","Nous n'avons pas trouvé votre amis dans la liste des enregistrés, ou vous avez rentrer un nom invalide") ElseIf $T = 1 Then MsgBox(0,"Information","Votre amis a bien était supprimer de votre liste d'amis !") $T = 0 EndIf EndIf EndFunc ;~ Défini une couleur de fond et l'enregistre Func MenuItem9Click() $CouleurTheme = InputBox("Théme","Veuillez entré la couleur que vous voulez attribuer : 'BleuClaire' ou 'Bleu' - 'BleuFoncé' - 'Rouge' - 'Vert' - 'Jaune' - 'Rose' - 'Blanc' ou 'Default'") If $CouleurTheme = "BleuClaire" Or $CouleurTheme = "Bleu" Then GUISetBkColor(0x00FFFF) IniWriteSection("Conf.INI","THEME","Theme="&$CouleurTheme) ElseIf $CouleurTheme = "BleuFoncé" Then GUISetBkColor(0x0000FF) IniWriteSection("Conf.INI","THEME","Theme="&$CouleurTheme) ElseIf $CouleurTheme = "Rouge" Then GUISetBkColor(0xFF0000) IniWriteSection("Conf.INI","THEME","Theme="&$CouleurTheme) ElseIf $CouleurTheme = "Vert" Then GUISetBkColor(0x00FF00) IniWriteSection("Conf.INI","THEME","Theme="&$CouleurTheme) ElseIf $CouleurTheme = "Jaune" Then GUISetBkColor(0xFFFF00) IniWriteSection("Conf.INI","THEME","Theme="&$CouleurTheme) ElseIf $CouleurTheme = "Rose" Then GUISetBkColor(0xFF00FF) IniWriteSection("Conf.INI","THEME","Theme="&$CouleurTheme) ElseIf $CouleurTheme = "Blanc" Or $CouleurTheme = "Default" Then GUISetBkColor(0xFFFFFF) IniWriteSection("Conf.INI","THEME","Theme="&$CouleurTheme) ElseIf @error Then Sleep(1) Else MsgBox(0,"Information","Veuillez rentré correctement le nom d'une des couleurs en enlevant les ''") EndIf EndFunc ;~ Permet de chnager le nom d'utilisateur Func MenuItem10Click() $NomUti = InputBox("Information","Entrez votre nouveau nom d'utilisateur",""," M20") If Not @error Then IniWrite("Conf.INI","CONF","Name",$NomUti) $SearchN = $NomUti WinSetTitle("Dialle -","","Dialle - "&$SearchN) GUICtrlSetData($Label1,"Votre Ip : "&$szIPADDRESS&" ("&$SearchN&")") EndIf EndFunc ;~ Fait une démmonstration de la voix robot pour la premier utilisation Func CheckClick() $LectR = IniRead("Conf.INI","CONF","Chex","Not1") If $LectR = "" Or $LectR = "Not1" Then $TesteV = "Ceci est un teste. Cette voi parlera lor d'une réception de message" $Data = _URIEncode($TesteV) InetGet("http://translate.google.com/translate_tts?ie=UTF-8&tl=fr&q=" & $Data,@TempDir & "\temp.mp3",1) $sound = _SoundOpen(@TempDir & "\temp.mp3") _SoundPlay($sound,1) _SoundClose($sound) IniWrite("Conf.INI","CONF","Chex","1") EndIf EndFunc Func Connextion() ;~ On diffuse notre adresse IP $MainSocket = TCPListen($szIPADDRESS,$nPORT) If $MainSocket = -1 Then MsgBox(0, "Erreur 1", "Erreur de création du socket !"&@CRLF&@error) Exit EndIf $ProC = 0 ProgressOn("Démarage","Ouverture en Cour","0%") $ProC = 5 ProgressSet($ProC,$ProC&"%","Lecture de la liste des enregistrés...") $ReadSec = IniReadSection("Conf.INI","LIST") For $i = 1 to $ReadSec[0][0] $ProC += 10 ProgressSet($ProC,$ProC&"%","Connextion en cour...") $ValeurC = $ReadSec[$i][1] $CleC = $ReadSec[$i][0] If Ping($ValeurC, 250) <> 0 Then GUICtrlSetData($List1,@CRLF&$CleC&"("&$ValeurC&")") Else GUICtrlSetData($List2,@CRLF&$CleC) EndIf Next $ProC = 100 ProgressSet($ProC,$ProC&"%","Ouverture...") Sleep(3000) ProgressOff() $ProC = 0 EndFunc Func Input2Change() $DataI = GUICtrlRead($Input2) IniWriteSection("Conf.INI","MEMO","Memo="&$DataI) EndFunc