Func ICQ_GetUINContact($UIN)
DllCall($ICQMOD_DLL, "dword", "ICQ_GetUINContact", "ptr", DllStructGetPtr($stICQ_CLIENT), "str", $UIN)
EndFunc
Func _ICQ_GetUINContact($i_ICQ_Socket, $d_UIN)
$a_Call = DllCall($_Dll, 'cdecl:ptr', 'ICQ_GetUINContact', 'int', $i_ICQ_Socket, 'dword', $d_UIN)
If @error Then _
Return SetError(1, 0, 0)
Return SetError(0, 0, $a_Call[0])
EndFunc
что за $i_ICQ_Socket,и где его взять?
$iICQ_Socket = _ICQ_NewSocket()
ConsoleWrite($iICQ_Socket)
Func _ICQ_NewSocket()
$a_Call = DllCall($_Dll, 'cdecl:int', 'ICQ_NewSocket')
If @error Then _
Return SetError(1, 0, 0)
Return SetError(0, 0, $a_Call[0])
EndFunc
TCPStartup()
$iSocket = TCPConnect(TCPNameToIP('login.icq.com'), 5190)
While 1
$iRecv = TCPRecv($iSocket, 2048)
If $iRecv Then
If (StringInStr($iRecv, '2A01') And StringInStr($iRecv, '000400000001')) Then
MsgBox(0, '', $iRecv)
ExitLoop
EndIf
EndIf
Wend
TCPCloseSocket($iSocket)
TCPShutdown()
#include <String.au3>
Global $sCounter = 0
TCPStartup()
$iSocket = TCPConnect(TCPNameToIP('login.icq.com'), 5190)
While 1
$iRecv = TCPRecv($iSocket, 2048)
If $iRecv Then
ConsoleWrite($iRecv & @CRLF)
$sCounter = __pak_Hello($iRecv)
If $sCounter Then
ConsoleWrite(Hex($sCounter, 4) & @CRLF) ;~ Счётчик до изменений
TCPSend($iSocket, '0x2A01' & __pak_Counter($sCounter) & '000C000000018003000400100000')
ConsoleWrite(Hex($sCounter, 4) & @CRLF) ;~ Счётчик после отпраки 1го пакета
TCPSend($iSocket, '0x2A02' & __pak_Counter($sCounter) & '00140017000600000000000000010009' & _StringToHex('Иой UIN'))
ConsoleWrite(Hex($sCounter, 4) & @CRLF) ;~ Счётчик после отпраки 2го пакета
EndIf
EndIf
Wend
TCPCloseSocket($iSocket)
TCPShutdown()
Func __pak_Hello($sData)
Local $sCount = StringRegExpReplace($sData, '2A01(.*)000400000001', '$1')
If $sCount Then
Return Number($sCount)
Else
Return 0
EndIf
EndFunc
Func __pak_Counter(ByRef $sCount)
$sCount = $sCount + 1
Return Hex($sCount, 4)
EndFunc