ICQ - форум. Всё про ICQ.  

Вернуться   ICQ - форум. Всё про ICQ. > Мастерская > Программирование

Программирование C / C++ / Visual C++ / Delphi / Visual Basic / ASM / Windows / Pascal

 
 
Опции темы Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.48.
Старый 28.05.2007, 06:59   #1
Участник
 
Регистрация: 06.08.2006
Сообщений: 243

ICQ: 272727765

Репутация: 406
По умолчанию TICQClient - исправления, дополнения и прочее

В этой теме будут выкладываться исправления и дополнения к компоненту TICQClient от Кобана для Delphi.


Компонент, актуально работающий на 13.08.2010
скачать: TICQClient
Пример работы с компонентом:
скачать: СheatICQ
Официальный хелп от coban2k
скачать: TICQClientHelp.rar



==============================

Оригинальный компонент (с демо): скачать


Компонент с работающими прокси и кодировками скачать тут


Компонент от Romen'a (с демо):
- движок на ICQ
- к архиве есть все необходимые модули (для WSocket'a от ICS 1.4, плюс из RxLib несколько модулей)
- из компонента убрано все "лишнее"
скачать

Демки делались в Turbo Delphi 2006, поэтому если вы будете собирать их под Delphi 7 и ниже не забудте в насткойках проекта указать пути, иначе среда не найдет эти модули и будет ругаться на их отсутствие.



1) Project -> Options
2) Закладка Directories/Conditionals
3) -> Units output directory: Units
-> Search path: ICQClient

Последний раз редактировалось DjFly; 04.02.2012 в 20:23.
Sax-mmS вне форума  
Плюсанули Sax-mmS — 3 :
Старый 05.01.2008, 18:54   #126
Участник
 
Регистрация: 28.11.2007
Сообщений: 5

Репутация: 1
По умолчанию

Цитата:
Сообщение от .fry Посмотреть сообщение
Шлется каждую минуту..
Ну видимо у кого как.
В демке которая идет с компонентом, не сделана отсылка KeepAlive пакетов.
Хотя может стоило бы, чтобы человек знал о такой возможности подробно не разбираясь с компонентом.

А так с отсылкой KeepAlive пакетов все просто чудесно.

Respect создателю и конечно тем, кто поддерживает это дело!

Последний раз редактировалось nDaDe; 05.01.2008 в 22:14.
nDaDe вне форума  
Старый 11.01.2008, 14:43   #127
Участник
 
Регистрация: 27.09.2006
Сообщений: 1,045

ICQ: 272768

Репутация: 2856
Отправить сообщение для .fry с помощью Skype™ Bimoid
По умолчанию ICQ\AIM Screen name Registration Date

Кому интересна Дата регистрации аккаунта:

в процедуре модуле ICQClient ищем строку функцию "TICQClient.HSnac030B"

и в ней в после
Код HTML:
    $04: {idle time}                    //* eraser 14.05.04
    begin
      Inc(Pkt^.Len, 2);                 //TLV's Length
      wIdleTime := GetInt(Pkt, 2);      //Idle in minutes
    end;
добавляем:
Код HTML:
    $05: { registration date }
    begin
      Inc(Pkt^.Len, 2);
      RegDate := UnixToDateTime(GetInt(Pkt, 4)); // Timestamp
      {if Assigned(OnRegDate) then FOnRegDate(Self, UIN, DateTimeToStr(RegDate))}
    end;
Дальше в RegDate, лежит дата регистрации номера\aim аккаунта, который пришел в OnlineInfo, лично я слегка модифицировал функцию FOnOnlineInfo

надо было как-то аапить тему :)
__________________
Хочешь знать как работает ICQ? Читай документацию по протоколу в OSCAR.

Последний раз редактировалось .fry; 11.01.2008 в 14:52.
.fry вне форума  
Плюсанул .fry :
Старый 11.01.2008, 22:56   #128
Участник
 
Аватар для yxu
 
Регистрация: 17.11.2006
Сообщений: 153

ICQ: 8070080

Репутация: 302
По умолчанию

Да там много чо шлеться:
Код:
 // TLV(1) Unknown (x50)
 // TLV(2) Member since (not sent)
 // TLV(3) Online since
 // TLV(4) Idle time (not sent)
 // TLV(5) Registered
 // TLV(6) New status
 // TLV(A) External IP
 // TLV(C) DC Info
 // TLV(D) Capabilities
 // TLV(F) Session timer (in seconds)
 // TLV(1D) Avatar Hash (20 bytes)
 // TLV(19) New capabilities
А кстати этот самый TLV(5) с датой регистрации шлется в пакете с сообщением и из-за этого некоторое время назад(наверно год уже :) перестали доходить сообщения, можно еще оттуда ее выковыривать ;)
yxu вне форума  
Плюсанул yxu :
Старый 12.01.2008, 15:11   #129
Участник
 
Регистрация: 12.01.2008
Сообщений: 3

Репутация: 1
По умолчанию

Специалисты по TICQ подскажите пож-ста
почему когда отваливается клиент (ICQ-бот) на TICQ не вызывается событие onConnectionFailed
Нада чтобы при потере коннекта запускался логин
bmkus вне форума  
Старый 12.01.2008, 16:06   #130
Участник
 
Регистрация: 06.08.2006
Сообщений: 243

ICQ: 272727765

Репутация: 406
По умолчанию

Не знаю, почему у вас не вызывается OnConnectionFailed. Тогда самый простой способ - повесить таймер и каждые n-секунд проверять состояние подключения.
__________________
Мой блог - Mac, Qt и немного Delphi.
Sax-mmS вне форума  
Плюсанул Sax-mmS :
Старый 12.01.2008, 16:29   #131
Участник
 
Регистрация: 12.01.2008
Сообщений: 3

Репутация: 1
По умолчанию

Цитата:
Сообщение от Sax-mmS Посмотреть сообщение
Не знаю, почему у вас не вызывается OnConnectionFailed
те проблем с этим не было замечено?
проверяю след образом бот висит на моем компе онлайн, я обрубаю инет и событие разрыва не происходит
bmkus вне форума  
Старый 12.01.2008, 17:27   #132
Участник
 
Регистрация: 27.09.2006
Сообщений: 1,045

ICQ: 272768

Репутация: 2856
Отправить сообщение для .fry с помощью Skype™ Bimoid
По умолчанию

bmkus, парой постов выще разбиралось это ;)
http://forum.asechka.ru/showpost.php...&postcount=125
__________________
Хочешь знать как работает ICQ? Читай документацию по протоколу в OSCAR.
.fry вне форума  
Плюсанул .fry :
Старый 12.01.2008, 21:02   #133
Участник
 
Регистрация: 12.01.2008
Сообщений: 3

Репутация: 1
По умолчанию

Пасиба .fry и yxy
а можно немного подробнее как использовать эту процедуру и где взять результат ее работы. Мануалов по ней не смог найти
Цитата:
Сообщение от yxu Посмотреть сообщение
в компаненте за пинг отвечает процедурка SendKeepAlive. Вешай ее на таймер и пингуй сколько влезет
bmkus вне форума  
Старый 12.01.2008, 21:05   #134
Участник
 
Регистрация: 27.09.2006
Сообщений: 1,045

ICQ: 272768

Репутация: 2856
Отправить сообщение для .fry с помощью Skype™ Bimoid
По умолчанию

открой её исходник в модуле ICQClient, и увидишь исходник
__________________
Хочешь знать как работает ICQ? Читай документацию по протоколу в OSCAR.
.fry вне форума  
Плюсанул .fry :
Старый 16.01.2008, 10:52   #135
Участник
 
Регистрация: 28.11.2007
Сообщений: 5

Репутация: 1
По умолчанию

Цитата:
Сообщение от bmkus Посмотреть сообщение
дак первым делом это и сделал, честно говоря не догоняю.
поможи пож-ста
Поставь таймер с интервалом в 1 мин, в котором посылай KeepAlive пакеты.
Например:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.enabled:=true;
If ICQClient.LoggedIn then
ICQClient.SendKeepAlive;
end;
nDaDe вне форума  
Старый 17.01.2008, 14:24   #136
Участник
 
Регистрация: 26.09.2006
Сообщений: 149

Репутация: 129
По умолчанию

Если кому нужно знать при поиске уинов еще и ИД базы (рамблер, бигмир, атлас ...) вот кусочек:

procedure TICQClient.HSnac1503(Flap: TFlapHdr; Snac: TSnacHdr; Pkt: PRawPkt);
...
FAge := GetInt(Pkt, 1); //The user's age.
inc(Pkt.Len, 3);
FBaseID := GetLNTS(Pkt); //The base ID.

if Assigned(OnUserFound) then
...

Не забудьте объявить переменную FBaseID и протащить по методам.
В переменную FBaseID возвращается строка типа: ID, (н.п.'1,', '3,', '10,', '16,'). Ну дальше массивек ИД и Почтовик и все готово.
__________________
{$R snt.res} <<<
sai_NT вне форума  
Плюсанул sai_NT :
Старый 17.01.2008, 15:50   #137
Участник
 
Аватар для yxu
 
Регистрация: 17.11.2006
Сообщений: 153

ICQ: 8070080

Репутация: 302
По умолчанию

Да боянчик так то, в квипе давно ж это показывает уже. Там после Id еще мыло для логина шлется (могу сказать стопудово только про рамблер, но по идее и на остальных должно быть).
yxu вне форума  
Плюсанул yxu :
Старый 18.01.2008, 16:21   #138
Участник
 
Регистрация: 26.09.2006
Сообщений: 149

Репутация: 129
По умолчанию

К вопросу по Basic Distribution ID:
[ 1 - Israel - icq.nana.co.il ]
[ 3 - Russia - icq.rambler.ru ]
[ 9 - Bulgaria - icq.abv.bg ]
[10 - Ukraina - icq.bigmir.net ]
[14 - Turkey - icq.mynet.com ]
[16 - Чехия - icq.atlas.cz ]
[18 - Словакия - icq.zoznam.sk ]
__________________
{$R snt.res} <<<
sai_NT вне форума  
Плюсанул sai_NT :
Старый 23.01.2008, 03:06   #139
Участник
 
Регистрация: 23.01.2008
Сообщений: 1

Репутация: 1
По умолчанию

Цитата:
Сообщение от SnakeV1.0 Посмотреть сообщение
procedure TForm1.Button1Click(Sender: TObject);
begin
ICQClient1.SearchWhitePages('' ,'','','',23,29,1,'','Moscow', 'Russia','','','','','','','', '','',false);
//7-ом параметре указывается пол, 1-женский, 2-мужской
//в последнем параметре ставь true если хочешь искать только онлайн
//контакты
end;
не работает :-( Вообще тишина.
Нашел только http://hghltd.yandex.net/yandbtm?url...=3&sg=40&isu=1
Но это не помогает у меня и так последний вариант
Что бы придумать, у кого было такое?
vodkapivo5 вне форума  
Старый 24.01.2008, 13:45   #140
Участник
 
Регистрация: 24.01.2008
Сообщений: 3

Репутация: 1
По умолчанию зависает программа с TICQClient

Написал программу. Все нормально коннектится через прокси. Отсылает, принимает сообщения все работает. Но где-то через полчаса зависает наглухо. Причем в списке приложений статус работающей программы. Подскажите пожалуйста какие основные причины зависания компонента TICQClient могут быть и как их обработать?
Petrovich44 вне форума  
Старый 24.01.2008, 15:44   #141
Участник
 
Регистрация: 22.01.2008
Сообщений: 2

Репутация: 1
По умолчанию

Цитата:
Сообщение от Petrovich44 Посмотреть сообщение
Написал программу. Все нормально коннектится через прокси. Отсылает, принимает сообщения все работает. Но где-то через полчаса зависает наглухо. Причем в списке приложений статус работающей программы. Подскажите пожалуйста какие основные причины зависания компонента TICQClient могут быть и как их обработать?
А ты пробовал отсылать КипЭлайф?
Поставь таймер минутный чтоб он отсылал... может помочь
AlexHell вне форума  
Старый 25.01.2008, 08:11   #142
Участник
 
Регистрация: 24.01.2008
Сообщений: 3

Репутация: 1
По умолчанию

Цитата:
Сообщение от AlexHell Посмотреть сообщение
А ты пробовал отсылать КипЭлайф?
Поставь таймер минутный чтоб он отсылал... может помочь
SentKeepAlive отсылается каждую минуту при наличии соединения. Если оно теряется прога снова коннектится к серверу.
Petrovich44 вне форума  
Старый 28.01.2008, 14:53   #143
Участник
 
Регистрация: 24.01.2008
Сообщений: 3

Репутация: 1
По умолчанию

Цитата:
Сообщение от Petrovich44 Посмотреть сообщение
SentKeepAlive отсылается каждую минуту при наличии соединения. Если оно теряется прога снова коннектится к серверу.
Проблема решена переустановкой компонента ICQ от Romen'a указанного вверху страницы. До этого была старая версия TIcqClient 1.21
Petrovich44 вне форума  
Старый 28.01.2008, 17:35   #144
Участник
 
Регистрация: 25.01.2008
Сообщений: 7

Репутация: 1
По умолчанию

Кто нибудь может дать пример проверки статусов Uinов КЛ при их изменении - т.е. входе/ выходе и т.д. , буду премного благодарен.
nkarataev вне форума  
Старый 28.01.2008, 22:35   #145
Участник
 
Аватар для yxu
 
Регистрация: 17.11.2006
Сообщений: 153

ICQ: 8070080

Репутация: 302
По умолчанию

uses ICQWorks;
Код:
procedure TForm1.ICQClient1StatusChange(Sender: TObject; UIN: String;
  Status: Cardinal);
begin
 if Status = S_ONLINE then showmessage(uin + ' сменил статус на ' + StatusToStr(Status));
end;
yxu вне форума  
Плюсанул yxu :
Старый 29.01.2008, 02:38   #146
Участник
 
Регистрация: 25.01.2008
Сообщений: 7

Репутация: 1
По умолчанию

Цитата:
Сообщение от yxu Посмотреть сообщение
uses ICQWorks;
Код:
procedure TForm1.ICQClient1StatusChange(Sender: TObject; UIN: String;
  Status: Cardinal);
begin
 if Status = S_ONLINE then showmessage(uin + ' сменил статус на ' + StatusToStr(Status));
end;

чой-то не работает, может чо не так делаю :( можно исходничек рабочик - а я его разберу :( (просто дельфи плоховато помню/знаю)
nkarataev вне форума  
Старый 29.01.2008, 09:03   #147
Участник
 
Аватар для yxu
 
Регистрация: 17.11.2006
Сообщений: 153

ICQ: 8070080

Репутация: 302
По умолчанию

Попробуй для начала разобрать данную ветку форума с 1 странички, а не читать с конца. Вопрос про смену статусов поднимался минимум 2 раза (а может и 3), и написано и разжевано, ан нет, пока носом не тыкнешь не увидят.
З.Ы. К исходному компаненту прилагается норм хелп, там можно найти ответы по всем свойствам и процедурам.
yxu вне форума  
Плюсанул yxu :
Старый 29.01.2008, 11:00   #148
Участник
 
Регистрация: 25.01.2008
Сообщений: 7

Репутация: 1
По умолчанию

Цитата:
Сообщение от yxu Посмотреть сообщение
Попробуй для начала разобрать данную ветку форума с 1 странички, а не читать с конца. Вопрос про смену статусов поднимался минимум 2 раза (а может и 3), и написано и разжевано, ан нет, пока носом не тыкнешь не увидят.
З.Ы. К исходному компаненту прилагается норм хелп, там можно найти ответы по всем свойствам и процедурам.
ФОрум читал, проблема в следующем - я всю жизнь разбирал языки программирования по исходникам (VB, PHP), в свое время сталкивался с Дельфями косвенное (изучал турбо паскаль)....

Сорри конечно, просто мне так легче - если я вижу реализацию и разбираю ее с учебником - два зайца убиваю - и программу понимаю и язык изучаю. А хелп (по крайней мере у меня) заключается в однострочном описании функции, без примеров и прочее...

А по теме - нашел инфу, спасибо, поправил ICQClient, ICQWorks... только после SSLActivate, перестал грузится контакт лист :(, коммент поставлю грузится, но нет статусов :( может подскажешь в чем дело, спасибо огромное!

Последний раз редактировалось nkarataev; 29.01.2008 в 17:55.
nkarataev вне форума  
Старый 30.01.2008, 13:56   #149
Участник
 
Регистрация: 22.01.2008
Сообщений: 2

Репутация: 1
По умолчанию

Народ... ну скажите мне пожалуйса... как разобраться с статусом Online... никак немогу добится того чтоб другие клиенты увидили моего в режиме Онлайна.. показывает что оффлайн в любых положениях... в чём косяк может быть????
AlexHell вне форума  
Старый 03.02.2008, 17:28   #150
Участник
 
Регистрация: 24.05.2007
Сообщений: 4

Репутация: 1
По умолчанию

Цитата:
Сообщение от AlexHell Посмотреть сообщение
Народ... ну скажите мне пожалуйса... как разобраться с статусом Online... никак немогу добится того чтоб другие клиенты увидили моего в режиме Онлайна.. показывает что оффлайн в любых положениях... в чём косяк может быть????
Косяк весь в том, что неавторизированные номера не показывают статуса, т.е. всегда оффлайн. А вот как в ICQClient авторизировать пользователя я не знаю. Вообще в Help ICQClient`a написано:
Цитата:
Если пользователь запросит авторизацию(authorization request), тогда он будет автоматически авторизован.
Но, при запросе на авторизацию ничего не происходит. Как решить эту проблему кто-нибудь знает?
Spide® вне форума  
 

Метки
delphi, ticqclient


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +3, время: 13:24.


Перевод: zCarot
Форум Асечников © Asechka.RU

Новости Сочи