Что нового

Простой 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
Репутация
95
А есть возможность пустить через HTTP-прокси?
 

joiner

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

vivera864

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

joiner

Модератор
Локальный модератор
Сообщения
3 061
Репутация
513
если уже существует файл 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 протоколом, все ссылки здесь удалены.
 
Верх