Что нового

Простой ICQ-клиент

vivera864

Новичок
Сообщения
6
Репутация
0
AutoIt: 3.3.6.1
Версия: 0.2

Категория: Сеть, Интернет

Описание:
ВНИМАНИЕ!!! Нужно скачать все три файла для работы программы в одну папку.

Простой ICQ-клиент, основан на "UDF. Работа с протоколом ICQ. Версия 1.0", умеет следующее:

*Создаёт ini-файл с параметрами при первом запуске и берёт логин-пароль оттуда

*Маскирует пароль

*Ведёт историю по каждому UIN'у

*Воспроизводит звук в стиле аськи при входящем сообщении

*Запоминает UIN того с кем вы говорили до выхода

*Сворачивается в трей

*Сам ставит в поле UIN'а UIN того от кого пришло сообщение (т. е. Быстрый ответ)

*Встроен модуль обновления (чесно не помню чей)

Исходный код:
Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=ICQ.ico
#AutoIt3Wrapper_Res_Fileversion=0.1
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#Include "Update.au3"
$Current_Version = "1"
_StartCheckForUpdate("http://icq-autoit.ucoz.org/ver.inf",$Current_Version,True)

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IcqMod.au3>
#include <GuiStatusBar.au3>

Opt("TrayMenuMode", 1)
$Form1 = GUICreate("ICQ v0.1", 618, 502, 200, 282, -1, $WS_EX_TRANSPARENT)
$Edit1 = GUICtrlCreateEdit("", 8, 40, 601, 297, BitOR($ES_AUTOVSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_VSCROLL))
$Edit2 = GUICtrlCreateEdit("1", 8, 344, 601, 81, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL))
GUICtrlSetData($Edit2, "Вводите сообщение тут")
$Input1 = GUICtrlCreateInput("UIN", 8, 8, 433, 21)
$Buttom1 = GUICtrlCreateButton("Запросить авторизацию", 448, 8, 161, 25, 0)
$Buttom2 = GUICtrlCreateButton("Отправить", 496, 432, 113, 25, 0)
$MenuItem1 = GUICtrlCreateMenu("Файл")
$MenuItem3 = GUICtrlCreateMenuItem("Выход", $MenuItem1)
$MenuItem4 = GUICtrlCreateMenu("?")
$MenuItem5 = GUICtrlCreateMenuItem("О Программе...", $MenuItem4)
$StatusBar1 = _GUICtrlStatusBar_Create($Form1)
TraySetClick("9")
$Tray1 = TrayCreateItem("Показать", -1, 1, 0)
$Tray2 = TrayCreateItem("Выход")

If Not FileExists(@ScriptDir & "\ICQ.ini") Then
FileOpen(@ScriptDir & "\ICQ.ini")
FileClose(@ScriptDir & "\ICQ.ini")

Opt("TrayMenuMode", 1)
$Form2 = GUICreate("Вход", 179, 126, 573, 86)
$Input2 = GUICtrlCreateInput("UIN", 10, 12, 161, 21, BitOR($ES_UPPERCASE,$ES_AUTOHSCROLL))
$Buttom3 = GUICtrlCreateButton("Подключение", 10, 76, 161, 25, 0)
$Input3 = GUICtrlCreateInput("Пароль", 10, 44, 161, 21, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Conn
			$UIN = GUICtrlRead($Input2)
			$Pass = GUICtrlRead($Input3)
			FileWrite(@ScriptDir & "\ICQ.ini", "[Set]")
			IniWrite(@ScriptDir & "\ICQ.ini", "Set",  "UIN", $UIN)
			$sPass = StringToBinary($Pass)
			IniWrite(@ScriptDir & "\ICQ.ini", "Set", "Pass", '"' & $sPass & '"')
			ExitLoop
		EndSwitch
WEnd
Else
	GUISetState(@SW_SHOW, $Form1)
EndIf

$UIN = IniRead(@ScriptDir & "\ICQ.ini", "Set", "UIN", 0)
$sPass = IniRead(@ScriptDir & "\ICQ.ini", "Set", "Pass", 0)
$Pass = BinaryToString($sPass)
$sUIN = IniRead(@ScriptDir & "\ICQ.ini", "Set", "Last", 0)
GUICtrlSetData($Input1, $sUIN)
Dim $En = 0

If ICQ_Connect("login.icq.com", 5190, $UIN, $Pass) = $ICQ_CONNECT_STATUS_OK Then
    _GUICtrlStatusBar_SetText($StatusBar1, "Подключён под: " & $UIN)
	While DllStructGetData($ICQ_CLIENT, "status") = $ICQ_CLIENT_STATUS_CONNECTED
		If ICQ_Read_Msg() = 1 Then
			$sMsg = DllStructGetData($RecvInfo, "msg")
			$sUIN = DllStructGetData($RecvInfo, "UIN")
			$His = GUICtrlRead($Edit1)
			TrayTip("Новое сообщение!", "От: " & $sUIN &@CRLF& "Текст: " & $sMsg, 15, 1)
			GUICtrlSetData ($Edit1, $sUIN & ": " & $sMsg &@CRLF, 1)
			GUICtrlSetData ($Input1, $sUIN)
			FileWrite($sUIN & ".txt", $sUIN & ": " & $sMsg &@CRLF)
			SoundPlay("Sound.mp3")
		EndIf
		$nMsg = GUIGetMsg()
		Switch $nMsg
			Case $GUI_EVENT_CLOSE
				ICQ_Close()
				$sUIN = GUICtrlRead($Input1)
				IniWrite(@ScriptDir & "\ICQ.ini", "Set", "Last", $sUIN)
				Exit
			Case $GUI_EVENT_MINIMIZE
				GUISetState(@SW_HIDE, $Form1)
			Case $Buttom2
				$ICQmessage = GUICtrlRead ($Edit2)
				If $ICQmessage = "" Then
					GUICtrlSetData ($Edit1, "System: Нечего отправлявлять!"&@CRLF, 1)
					GUICtrlSetState ($Edit2, $GUI_FOCUS)
				EndIf
				$ICQmessageBin = StringToBinary($ICQmessage, 4)
				$ICQmessageUtf = BinaryToString ($ICQmessageBin , 4)
				$master = GUICtrlRead($Input1)
				ICQ_Send_Msg($master,$ICQmessageUtf)
				GUICtrlSetData ($Edit2, "")
				GUICtrlSetData ($Edit1, "Вы: "&$ICQmessage&@CRLF, 1)
				GUICtrlSetState ($Edit2, $GUI_FOCUS)
				FileWrite($master & ".txt", "Вы: " & $ICQmessage & @CRLF)
				FileWrite($master & ".txt", "Вы: " & $ICQmessage & @CRLF)
			Case $MenuItem3
				ICQ_Close()
				$sUIN = GUICtrlRead($Input1)
				IniWrite(@ScriptDir & "\ICQ.ini", "Set", "Last", $sUIN)
				Exit
			Case $Buttom1
				$sUIN = GUICtrlRead($Input1)
				ICQ_Ask_Auth($sUIN)
				ICQ_Auth($sUIN)
			Case $MenuItem5
				MsgBox(0, "О программе...", "ICQ v0.1 by vivera864")
			Case $Tray1
				GUISetState(@SW_SHOW, $Form1)
		EndSwitch
		$msg = TrayGetMsg()
		Select
			Case $msg = $Tray1
				GUISetState(@SW_SHOW, $ICQ)
			Case $msg = $Tray2
				ICQ_Close()
				$sUIN = GUICtrlRead($Input1)
				IniWrite(@ScriptDir & "\ICQ.ini", "Set", "Last", $sUIN)
				Exit
		EndSelect
	WEnd
Else
	_GUICtrlStatusBar_SetText($StatusBar1, "Не удалось подключится, поворите попытку позднее")
	While 1
		$nMsg = GUIGetMsg()
		Switch $nMsg
			Case $GUI_EVENT_CLOSE
				Exit
		EndSwitch
	WEnd
EndIf

Файл: EXE, DLL, MP3, ZIP (исходники)

Снимок:


История версий:
v0.2
*Исправлено название переменной окна
v0.1
*Первая версия

Автор(ы): Vivera864
 

sss

Продвинутый
Сообщения
332
Репутация
96
А есть возможность пустить через HTTP-прокси?
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
при запуске экзешника выдает ошибку Variable used without being declared
 
Автор
V

vivera864

Новичок
Сообщения
6
Репутация
0
да уж, лучше вообще эту тему удалить
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
если уже существует файл ICQ.inf, то запуск происходит без проблем. при проверке основного скрипта было указано что переменная $ICQ не объявлена.
Код:
ICQ.au3(124,31) : WARNING: $ICQ: possibly used before declaration.
				GUISetState(@SW_SHOW, $ICQ)
				~~~~~~~~~~~~~~~~~~~~~~~~~~^
ICQ.au3(124,31) : ERROR: $ICQ: undeclared global variable.
				GUISetState(@SW_SHOW, $ICQ)
				~~~~~~~~~~~~~~~~~~~~~~~~~~^
 
Автор
V

vivera864

Новичок
Сообщения
6
Репутация
0
не, он на название переменной окна ругается
 
Автор
V

vivera864

Новичок
Сообщения
6
Репутация
0
Новая версия 0,2
*Исправил имя переменной окна
OffTopic:
программа самообновится должа но этого не делает
 

orderNew

Новичок
Сообщения
1
Репутация
0
Перезалейте пожалуйста кто нибудь :blink: весь архив файлов...
 

lewel

Новичок
Сообщения
12
Репутация
0
перезалейте плиз исходники файлов, очень нужно
 

s00n

Новичок
Сообщения
4
Репутация
0
Нужны функции для работы с ICQ протоколом, все ссылки здесь удалены.
 
Верх