TICQClient - исправления, дополнения и прочее
Вложений: 1
В этой теме будут выкладываться исправления и дополнения к компоненту TICQClient от Кобана для Delphi.
Компонент, актуально работающий на 13.08.2010 скачать: TICQClient Пример работы с компонентом: скачать: СheatICQ Официальный хелп от coban2k скачать: Вложение 13158 ============================== Оригинальный компонент (с демо): скачать Компонент с работающими прокси и кодировками скачать тут Компонент от 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 |
Если поменять везде где идет отсылка/прием сообщений(авторизаций) тип UIN:LongWord на String то можно будет и на AIM ники писать мессаджи :)
|
Выложу поиск как в QIP - поиск собеседников и как в ICQ6 ....
в ICQWorks Код:
{Do an extensive search for a user one. ADV} Код:
procedure TICQClient.HSnac1503(Flap: TFlapHdr; Snac: TSnacHdr; Pkt: PRawPkt); |
В компоненте есть регистрация номеров, тока она стала с картинками и баном по ip - 3 номера в 15 минут. Плюс ее надо переписывать, что вобщем не сложно. Но тут один плюс (он же минус) - номера регаются инвизы. СКРИН. Минус в том, что если ими не воспользоваться в течение какого-то срока их удалят, ну и пароль ресетнут.
|
Вложений: 1
А вот версия компанента от yegor вроде. Давно нарыл на каком то сайте, соответственно придется вносить изменения на логин и приемку сообщений, НО зато тут исправлена работа с прокси и понапихано немножко полезных функций, типа регистрации нового уина с картинками :) За базовый компонент конешно брать не рекомендую, но повырезать много полезных вкусностей можно ;)
|
Подскажите как выгрузить контакт лист с сервера???
____________________ :helpsmili :helpsmili :helpsmili |
Народ, а кто нибудь сталкивался с проблемой подключения к серверу ICQ при использовании
компонент от Кабана, а именно в проекте без форм? TICQClient v.1.21 (пропатченная), Delphi 7 Тоесть даже если : project SuperICQ; uses windows, ICQClient,...; var ICQ : TICQClient; begin try ICQ := TICQClient.Create(nil); ICQ.UIN := 123123; ICQ.PassWord := 'superpass'; ICQ.Login; finally .... ICQ.Free; end; end. Причём именно в таком раскладе, если тоже самое перенести в проект где присутствуют формы, то всё нормально. P.S. В некоторых модулях TICQClient были строчки с директивами в которых автор давал рекомендацию для их удаления, если компонент используется в проекте без форм, но толку это не дало. Пробовал вообще избавиться от класса TComponent из TICQClient, что бы привести всё к виду : ICQ := TICQClient.Create; вместо Create(nil). Но ничего не дало... в Королевстве Дельфи находил похожую проблему, но рецепта на излечения не нашёл :( И на одном из сайтов нашёл похожую проблему, где парень писал плагин к Download Master, там давали совет включить строчку в проект Applicatio.CreateHandle; но в моём проекте вообще нет модуля Forms, .... вообщем уже 2 недели копаюсь... помогите пожалуйста!!!! SOS!!! :helpsmili |
А он и не будет работать без Forms. Класс Application - это по сути менеджер для работы с сообщениями винды. TICQClient работает с потоками, но его таймеры работают на сообщениях, поэтому если в приложении нет собтсвенного диспетчера собщений он работать не будет. Пиши свой аналог TApplication :)
Можно попробовать отключить директиву USE_FORMS, но это не избавить тебя от модуля Forms (он используется в ICQClient.pas, а потому принудительно линкуется к программе) |
А вот у меня возник еще такой вопрос в icqworks.pas есть флаги для показа ip и webaware. Вот хотел бы узнать куда их нужно прилепливать, чтоб соответственно показывать айпи и вебаваре, пытался прикрутить к статусу, но чото все равно не показывает не то, не другое.
|
по идее в SNAC(01,1E) CLI_SETxSTATUS, а еще в SNAC(15, 02) можно, какая-то новая разновидность пакетов появилась. Сам не видел, но говорят есть.
|
Цитата:
Даже при использовании ТраффикКомпрессора - выводится 19 номеров одновременно. Без него - до 130 и более // и никаких проксов ;) |
Вместо
Цитата:
Цитата:
|
не велика разница... теперь просто пишет "соединение" и всё... :-\
кто-нибудь! скинте пожалуйста самую примитивную, исключительно чтобы работала , абсолютно без наворотов, уже готовую прогу, которая работает на 100%, с исходником. буду оч благодарен |
Demo. Правда там компонент родной.
|
Раз компанент выдран из NIC значит надо зайти в соответствующую тему и скачать выложенные AUR исходники NIC, логично не правда ли?
А так попробуй: AIMClient:= TICQClient.Create(MainForm); AIMClient.ICQServer:= 'login.icq.com'; AIMClient.ICQPort:= 5190; AIMClient.ScreenName:= ...; AIMClinet.UIN:=...; AIMClient.Password:= ...; AIMClient.Login; |
Help по компоненту. А вообще поищи FacileICQ - простенький ICQ клиент на этом компоненте с сорцами.
|
еще вопрос к знающим =) почему то не хочет клиент прицеплятся через прокси :( последняя возвращает ошибку с кодом 403 (forbidden) настройками компонента побаловался чего то не помогло... может быть в самом компоненте как то неправильно реализованы запросы на эту самую прокси? кто чего подскажет может? заранее спасибо
|
Во-первых, не факт что проксик поддерживает CONNECT без авторизации, во-вторых, прокси в компоненте действительно очень криво сделаны (1 из 100 когда проксик пашет), в-третьих - правленного варианта не видел.
|
прокси поддерживает соединение без авторизации, я ей сам постоянно пользуюсь, ибо прокси эта предоставлена моим провайдером и сделана специально для аськи, а вот насчет кривости компонента я сразу подумал...потому как заводские пагеры куипы всякие да аськи ходят как из ружья =) а по поводу 3го хорошо бы еслиб кто поправил :blushing: а то я сам не особо силен в программировании приложений для сетей :dunno: или совет бы ценный =) и все равно спасибо за инфу
|
Вот появилось свободное время продолжаю встраивать всякие вкусности в компанент, вот делал определение клиента пользователя. С помощью исходников крыски и снифера сделал определение наверно всех нестандартных клиентов и вот возник вопрос как корректно и граммотно лучше всего определять версию стандартных icq клиентов 98, 99, 2000, 2001, lite, 2003b и т.д. В крысе сделано по версии протокола, а как же тогда 4, 5.1 и 6? Или лучше сравнивать наборы capabilities, вообщем хотел бы услышать полный ответ, если можно с примером или поподробнее. Заранее спасибо.
|
Dimon550, ясно.. Ты про входящие мессаги. Ну я на них особо не обращал внимания, т.к. пишу спамер, но вроди чето доходит =)
Добавлено через 1 минуту А вооще событие может не работать потому што написал непраилно ченибудь ICQ.OnMessageRecv:= OnICQMessageRecv; procedure TForm1.OnICQMessageRecv(Sender : TObject; Msg, UIN: String); begin mmLog.Lines.Append(UIN+'>>:'+m sg); end; - гденидь опечатался и на входящие месаги глухо как в танке |
я ща просидел, с последнего моего поста, пытаясь понять почему пакеты не допускаются к обработке. оказывается, от некоторых уинов приходят большие пакеты, которые не вписываются не в одну из категорий, которая описана в компоненте...
procedure TICQClient.HSnac0407(Flap: TFlapHdr; Snac: TSnacHdr; Pkt: PRawPkt); вот эта процедура отвечает за допуск к обработке. обычно выступают такие значения: строка с операцией | результат выполнения 2117 | 1 2128 | 2 а вот при этих не допускается: 2117 | 2 (первый и второй цикл) 2160 | неравно 5 (третий цикл) 2160 | равно 5 2163 | 0 что приводит к выходу из функции P.s. - а в демке такая же лажа))) Добавлено через 2 часа 37 минут Так теперь другая проблема: во время дисконнета выдает Error вида: 'Thread Error: Неверный дескриптор (6)':dunno: смотрел код - все вроде норм... Но тогда на что оно ругается:dunno: :confused_ Добавлено через 3 часа 20 минут :dry: спасибо за вашу помощь, пришлось все самому делать.... всё работает, а с теми, кто мне помог, я поделюсь |
Цитата:
|
Цитата:
destructor TThreadTimer.Destroy; begin fTrigger.Terminate; if not fTrigger.Suspended then fTrigger.WaitFor; //else fTrigger.Free; inherited; end; P.S. Sax-mmS, не мог бы ты подсказать по моему вопросу про определение версий стандартных icq клиентов, думаю ты должен знать. Спасибо за внимание ;) |
Вложений: 1
короче кому нужен клиент на TWSocket со встоенной поддержкой SOCKS проксей и дописанной HTTPs PS: частично реализована смена инфы на номере. а так все работает. повыкидывал всякие методы по передаче файлов и по DC... не забываем тыкать спасибо...
Вложение 6258 |
Я тут ковырял capabilities, вот насобирал кучку. Можно юзать для определения версии клиента или смены своей версии :)
Смотрим тут |
Дак собственно в чем сложность то, берешь и суешь в капабилды свою строчку :) Просто она отоброжаться нигде не будет почти. Ну там в r&q сейчас показывает капабилды так то. Вообщем вот строчка:
#$41#$73#$65#$63#$68#$6B#$61#$ 20#$20#$20#$20#$20#$20#$20#$20 #$20 // Asechka и кучка пробелов ;) Берешь ascii номер от буквы и переводишь из десятичной в 16-ую и все. |
Хм...странно, но как квип тогда показывает не свои клиенты...
Допустим вышел новый клиент Icq 7.0 , а в квипе хоть даже в 8000 покажет ведь нормально... Почему мы свой не можем вставить =\ Странно блин |
Да ну, брось давай, квип, как и любой другой интернет пейджер определяет только то, что в него заложено. Просто создатели же тоже не клювом щелкают, они по возможности заранее закладывают определение версий.
|
Моя модификация TICQClient
Случайно наткнулся на данный форум. Решил поделиться тем что я сделал.
Основные отличия от оригинальной версии: - md5 авторизация - отсылка/прием typing notification - download/upload аватаров - Исправлены все изменения протокола на сегодняшний день - ну и куча всего по-мелочи Взять можно с www .kozachok .net .ua/downloads/TIcqClient/ Буду рад если кому-нибудь пригодится. При использовании кода с моими изменениями ссылка на автора в шапке модуля обязательна. |
OkeyUA,
А как начёт передачи файлов? |
Вложений: 1
OkeyUA, спасибо, возьму пару полезностей. Написано с умом, с расстановкой, очень понравилось спасибо. Советую использовать всем.
Файлика только не хватает uses uMD5Hash ;) Вот порылся у себя нашел файлик, вроде подходит. |
Цитата:
Как-то небыло необходимости. |
OkeyUA,
1 Решил проверить код на стабильность и вот: Модуль ICQClient.pas, фрагмент проблемного кода: Код:
if (Length(Msg) > 0) then Код:
ShortString Может надо заменить тип со String на другой или указать дериктиву компилятору? Или брезать лишний текст? 2 И нужно унифицировать, UIN - Word, Integer или String, будет? 3 А справки коротенькой по аватарам нету? Т.к. в коде док. нету. По протоколу из темы: 1 Планируется исправление отправки Статус сообщения и добавления установки текста ХСтатуса и сообщения ХСтатуса. |
Вложений: 1
Цитата:
P.S. А да, забыл добавить, там у меня сделано только jpeg аватарки грузить, для остальных расширений надо юзать соответствующие компаненты. |
Цитата:
Цитата:
Нужно "правильно" переписать блок приема и отправки сообщений. Таким образом, чтобы он был минимально чувствителен к изменениям протокола... Также нужно еще много чего... Вопрос в малом - мотивация и время :) Цитата:
Прием пользовательских аватаров: Код:
... Код:
IcqClient.UploadAvatar(OpenPictureDialog.FileName); |
Проблема
Я пишу ICQ бота с поддержкой плагинов.
Так вот все хорошо но почему то после того как бот получает сообщение он пишет типа соединение разорвано. В чем может быть проблема? Вот код: Код:
проверял, dll возвращает значение. уже несколько раз пробовал, как только делаю динмаическим ответ (несколько команд) так всегда вот такая ошибка. Заранее спасибо!!! |
Во-первых, интересно посмотреть код хоть одной функции Answer из библиотеки, потому что Delphi, мягко говоря, не дает передавать в DLL значения типа String. Они туде не доходят.
Во-вторых, ICQMessageRecv смотрел под отладчиком? |
Ну я проверял на функции в DLL
function answer(msg:string):string;expo rt; begin Result:=Engtorus(msg); end; в принципе сколько писал со string проблем не было. Я проверял -функция нормально возвращает значение. Отладчик пока не смотрел... Добавлено через 2 часа 31 минуту Цитата:
Если можно выложи) |
1) Передавать стринги в делфе с длл-ки это хороший источник ошибок, потому что оно то работает - то нет.
2) то что сейчас есть - вылаживать - стыдно (немного коряво написано, да и ещё глюк есть), а кого заинтересует в нем разбираться - могу кинуть на мыло. 3) В новом TICQClient у меня наблюдается глюк: на некоторых сообщениях приходит не то что отправил, то есть после сообщения приходит ещё какой-то мусор, а иногда вообще виснет... Ни у кого такого не наблюдалось? |
Часовой пояс GMT +3, время: 16:02. |
Перевод: zCarot
Форум Асечников © Asechka.RU