#include <String.au3>
#include <array.au3>
#include <GUIConstantsEx.au3>
Global $sDomen='http://localhost/new.php?'
Global $Key='UnRealPass'
#region CREATE GUI
$MainGUI = GUICreate('Прототип чата', 300, 400)
GUISetBkColor(0xAAAAAA)
$GUI_MyID = GUICtrlCreateInput('1', 5, 5, 40, 20, 0x2000 + 0x01)
GUICtrlSetFont(-1, 8, 800)
GUICtrlSetTip(-1,'My ID')
$GUI_ToID = GUICtrlCreateInput('2', 50, 5, 40, 20, 0x2000 + 0x01)
GUICtrlSetFont(-1, 8, 800)
GUICtrlSetTip(-1,'To ID')
$GUI_Start=GUICtrlCreateLabel('Старт', 100, 6, 195, 18, 0x0100 + 0x01)
GUICtrlSetFont(-1, 10, 600)
GUICtrlSetBkColor(-1, 0xffffff)
GUICtrlSetTip(-1,'Клааац')
GUICtrlCreateLabel('', 5, 30, 270, 250)
$GUI_Msg = GUICtrlCreateEdit("", 5, 30, 290, 250, 0x1000 + 0x4000 + 0x00800000 + 0x00200000 + 0x0040 + 0x0800)
GUICtrlSetFont(-1, 8, 800)
GUICtrlSetState(-1, $GUI_DISABLE)
$GUI_NewMsg = GUICtrlCreateEdit("", 5, 300, 290, 60, 0x0040)
GUICtrlSetFont(-1, 8, 800)
GUICtrlSetState(-1, $GUI_DISABLE)
$GUI_Send=GUICtrlCreateButton('О Т П Р А В И Т Ь', 5, 370, 290, 25)
GUICtrlSetFont(-1, 10, 600)
GUICtrlSetBkColor(-1, 0xffffff)
GUICtrlSetState(-1, $GUI_DISABLE)
Global $AccelKeys[1][2] = [["{ENTER}", $GUI_Send]]
GUISetAccelerators($AccelKeys)
GUISetState()
#endregion CREATE GUI
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_Start
$MyID=GUICtrlRead($GUI_MyID)
$ToID=GUICtrlRead($GUI_ToID)
If $MyID=$ToID Then
MsgBox(16,'Ошибка!','ID совпадают!',3)
ContinueLoop
EndIf
GUICtrlSetData($GUI_Start,'')
GUICtrlSetState($GUI_MyID,$GUI_DISABLE)
GUICtrlSetState($GUI_ToID,$GUI_DISABLE)
GUICtrlSetState($GUI_Start,$GUI_DISABLE)
GUICtrlSetState($GUI_Msg,$GUI_ENABLE)
GUICtrlSetState($GUI_NewMsg,$GUI_ENABLE)
GUICtrlSetState($GUI_Send,$GUI_ENABLE)
_Adlib_GetNewMsg()
AdlibRegister("_Adlib_GetNewMsg", 5000)
Case $GUI_Send
$Msg=GUICtrlRead($GUI_NewMsg)
$Msg_Time=_PHP_SendMsg($MyID,$ToID,$Msg)
If IsString($Msg_Time) Then GUICtrlSetData($GUI_Msg, $Msg_Time&'>> '&$Msg&@CRLF,1)
GUICtrlSetData($GUI_NewMsg, '')
EndSwitch
WEnd
#region FUNC
Func _PHP_SendMsg($_sMyId,$_sSendTo,$_sText)
If $_sText='' Then Return 0
$_sUrl=$sDomen&'Do=SendMsg&MyId='&$_sMyId&'&SendTo='&$_sSendTo&'&Msg='&_StringEncrypt(1,$_sText,$Key)
$_sAns=InetRead($_sUrl,1)
If @error<>0 Then
Return 0
Else
$_sAns=BinaryToString($_sAns)
Return $_sAns
EndIf
EndFunc
Func _PHP_GetNewMsg($_sMyId,$_sSender)
$_sUrl=$sDomen&'Do=GetNewMsg&MyId='&$_sMyId&'&Sender='&$_sSender
$_sAns=InetRead($_sUrl,1)
If @error=0 Then
$_sAns=BinaryToString($_sAns)
If $_sAns='Error!' Then
Return -1
ElseIf $_sAns='Null' Then
Return 0
Else
$_sAns=StringReplace($_sAns,@CRLF,'#')
$_aAns=StringSplit($_sAns,'#')
_ArrayDelete($_aAns,$_aAns[0])
$_aAns[0]-=1
Return $_aAns
EndIf
Else
Return -2
EndIf
EndFunc
Func _Adlib_GetNewMsg()
GUICtrlSetData($GUI_Start, '...')
Sleep(100)
GUICtrlSetState($GUI_Send,$GUI_DISABLE)
$_aMsg=_PHP_GetNewMsg($MyID,$ToID)
If IsArray($_aMsg) Then
For $i=1 To $_aMsg[0]
$_sTime=StringRegExpReplace($_aMsg[$i],'(\[.*?\]\[.*?\]).*','\1')
$_sMsg=_StringEncrypt(0,StringRegExpReplace($_aMsg[$i],'.*?\{(.*?)\}.*','\1'),$Key)
GUICtrlSetData($GUI_Msg, $_sTime&'<< '&$_sMsg&@CRLF,1)
Next
ElseIf $_aMsg=-2 Then
GUICtrlSetData($GUI_Start, 'Ошибка запроса')
ElseIf $_aMsg=-1 Then
GUICtrlSetData($GUI_Start, 'Диалог отсутствует')
ElseIf $_aMsg=0 Then
GUICtrlSetData($GUI_Start, 'Нет новых сообщений')
EndIf
Sleep(200)
GUICtrlSetState($GUI_Send,$GUI_ENABLE)
GUICtrlSetData($GUI_Start, '')
EndFunc
#endregion FUNC