Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ICQ - протокол снова обновился, а компоненты новой ещё нету:-((( 
:(
    Опции темы
Gorcer
Дата 25.10.2006, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 30.6.2004
Где: Владивосток

Репутация: нет
Всего: 4



Приветствую, я писал программу использующую TICQClient (кобаносвкую) и всё было прекрасно пока злобные буржуи не изменили чтото в протоколе.

Как результат - прога моя мёртвая.
Слышал что распостраняется новая версия библиотеки ICQ.dll.

Итак вопрос: кто знает как работать с ICQ протоколом посредством этой DLL-ки.
В идеале хотелось бы увидеть докусентацию (спецификацию), какие там внутри методы и свойства есть...


--------------------
Больнее всего получить удар от человека которому доверяешь.

<удалено администрацией>
PM MAIL WWW ICQ Skype   Вверх
Snowy
Дата 25.10.2006, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Угу. Есть такая бяка.
Не знаю, если дойдут руки - раскопаю, что поменялось.
Нет, так нет.

Да есть такая dll. Только зовётся ICQMsgAPI.dll
Взять её можно у AOL. Для этого нужно зарегестрироваться, как разработчик.
Описание на руском можно почитать тут: http://z-alliance.narod.ru/icq/API.htm
Заголовки в аттаче.

Присоединённый файл ( Кол-во скачиваний: 88 )
Присоединённый файл  icq.zip 2,56 Kb
PM MAIL   Вверх
WGR
Дата 26.10.2006, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 184
Регистрация: 6.6.2006
Где: Россия

Репутация: нет
Всего: нет



//сохраните этот код в ICQMAPI_API.PAS
//незабудте про ICQMAPI.DLL
и в своей проге в uses добавляем ICQMAPI_API



Код

unit ICQMAPI_API;

interface 
uses windows; 
const libname = 'ICQMAPI.DLL'; 

type
  BSICQAPI_FireWallData = packed record 
    m_bEnabled, 
      m_bSocksEnabled: BYTE; 
    m_sSocksVersion: Word; 
    m_szSocksHost: array[0..512 - 1] of char; 
    m_iSocksPort: integer; 
    m_bSocksAuthenticationMethod: BYTE;
  end; 

  BSICQAPI_User = packed record 
    m_iUIN: integer; 
    m_hFloatWindow: HWND; 
    m_iIP: integer; 
    m_szNickname: array[0..20 - 1] of char;
    m_szFirstName: array[0..20 - 1] of char; 
    m_szLastName: array[0..20 - 1] of char; 
    m_szEmail: array[0..100 - 1] of char; 
    m_szCity: array[0..100 - 1] of char; 
    m_szState: array[0..100 - 1] of char; 
    m_iCountry: integer; 
    m_szCountryName: array[0..100 - 1] of char;
    m_szHomePage: array[0..100 - 1] of char; 
    m_iAge: integer; 
    m_szPhone: array[0..20 - 1] of char; 
    m_bGender: BYTE; 
    m_iHomeZip: integer; 
// Version 1.0001 
    m_iStateFlags: integer;
  end; 

//BPSICQAPI_User=^BSICQAPI_User; 

  BSICQAPI_Group = packed record 
    m_szName: array[0..50 - 1] of char; 
    m_iUserCount: integer;
    m_ppUsers: BSICQAPI_User; 
  end; 

//BPSICQAPI_Group=^BSICQAPI_Group; 

  BICQAPINotify_OnlineListChange = procedure(iType: integer); stdcall;
  BICQAPINotify_OnlineFullUserDataChange = procedure(iUIN: integer); stdcall;
  BICQAPINotify_AppBarStateChange = procedure(iDockingState: integer); stdcall;
  BICQAPINotify_OnlinePlacementChange = procedure; stdcall; 
  BICQAPINotify_OwnerChange = procedure(iUIN: integer); stdcall; 
  BICQAPINotify_OwnerFullDataChange = procedure; stdcall; 
  BICQAPINotify_OnlineListHandleChange = procedure(hWindow: hwnd); stdcall; 
  BICQAPINotify_FileReceived = procedure(const pszFileNames: pchar); stdcall; 


const 
  BICQAPI_USER_STATE_ONLINE = 0; 
  BICQAPI_USER_STATE_CHAT = 1; 
  BICQAPI_USER_STATE_AWAY = 2; 
  BICQAPI_USER_STATE_OUT = 3;
  BICQAPI_USER_STATE_OCCUPIED = 4; 
  BICQAPI_USER_STATE_DND = 5; 
  BICQAPI_USER_STATE_INVISIBLE = 6; 
  BICQAPI_USER_STATE_OFFLINE = 7; 

  ICQAPINOTIFY_ONLINELIST_CHANGE = 0;
  ICQAPINOTIFY_ONLINE_FULLUSERDATA_CHANGE = 1; 
  ICQAPINOTIFY_APPBAR_STATE_CHANGE = 2; 
  ICQAPINOTIFY_ONLINE_PLACEMENT_CHANGE = 3; 
  ICQAPINOTIFY_OWNER_CHANGE = 4; 
  ICQAPINOTIFY_OWNER_FULLUSERDATA_CHANGE = 5; 
  ICQAPINOTIFY_ONLINELIST_HANDLE_CHANGE = 6;
  ICQAPINOTIFY_FILE_RECEIVED = 8; 
  ICQAPINOTIFY_LAST = 80; 
  ICQAPINOTIFY_ONLINELISTCHANGE_ONOFF = 1; 
  ICQAPINOTIFY_ONLINELISTCHANGE_FLOAT = 2; 
  ICQAPINOTIFY_ONLINELISTCHANGE_POS = 3; 


procedure ICQAPIUtil_FreeUser(var pUser: BSICQAPI_User); stdcall; 
procedure ICQAPIUtil_FreeUsers(iCount: integer; var pUsers: BSICQAPI_User); stdcall; 
procedure ICQAPIUtil_FreeGroup(var pGroup: BSICQAPI_Group); stdcall; 

function ICQAPICall_SetLicenseKey(const pszName: pchar; const pszPassword: pchar; const pszLicense: pchar): BOOL; stdcall;
function ICQAPICall_GetVersion(var iVersion: integer): BOOL; stdcall;
function ICQAPICall_GetDockingState(var iDockingState: integer): BOOL; stdcall; 
function ICQAPICall_GetFirewallSettings(var oFireWallData: BSICQAPI_FireWallData): BOOL; stdcall; 
function ICQAPICall_GetFullOwnerData(var ppUser: BSICQAPI_User; iVersion: integer): BOOL; stdcall; 
function ICQAPICall_GetFullUserData(var pUser: BSICQAPI_User; iVersion: integer): BOOL; stdcall;
function ICQAPICall_GetOnlineListDetails(var iCount: integer; var ppUsers: BSICQAPI_User): BOOL; stdcall; 
function ICQAPICall_GetOnlineListHandle(var hWindow: hwnd): BOOL; stdcall; 
function ICQAPICall_GetOnlineListPlacement(iIsShowOnlineList: integer): BOOL; stdcall; 
function ICQAPICall_GetWindowHandle(var hWindow: hwnd): BOOL; stdcall; 
function ICQAPICall_RegisterNotify(iVersion, iCount: integer; var piEvents: BYTE): BOOL; stdcall;
function ICQAPICall_UnRegisterNotify(): BOOL; stdcall; 
function ICQAPICall_SendFile(iPIN: integer; const pszFileNames: pchar): BOOL; stdcall; 
// Version 1.0001 
function ICQAPICall_GetOnlineListType(var iListType: integer): BOOL; stdcall; 
function ICQAPICall_GetGroupOnlineListDetails(iGroupCount: integer; var ppGroups: BSICQAPI_Group): BOOL; stdcall;
function ICQAPICall_SetOwnerState(iState: integer): BOOL; stdcall; 
function ICQAPICall_SetOwnerPhoneState(iPhoneState: integer): BOOL; stdcall; 
function ICQAPICall_SendMessage(iUIN: integer; const pszMessage: Pchar): BOOL; stdcall; 
function ICQAPICall_SendURL(iUIN: integer; const pszMessage: pchar): BOOL; stdcall; 
function ICQAPICall_SendExternal(iUIN: integer; const pszExternal: pchar; const pszMessage: pchar; bAutoSend: BYTE): BOOL; stdcall;
function ICQAPICall_Generic(iCode: integer; {var?} pInBuffer: pointer; iInSize: integer; var ppOutBuffer: pointer; var iOutSize: integer): BOOL; stdcall; 

procedure ICQAPIUtil_SetUserNotificationFunc(uNotificationCode: UINT; pUserFunc: pointer); stdcall; 


implementation 

//uses Haupt;
procedure ICQAPIUtil_FreeUser(var pUser: BSICQAPI_User); external libname; stdcall;
procedure ICQAPIUtil_FreeUsers(iCount: integer; var pUsers: BSICQAPI_User); external libname; stdcall; 
procedure ICQAPIUtil_FreeGroup(var pGroup: BSICQAPI_Group); external libname; stdcall; 

function ICQAPICall_SetLicenseKey(const pszName: pchar; const pszPassword: pchar; const pszLicense: pchar): BOOL; external libname; stdcall;
function ICQAPICall_GetVersion(var iVersion: integer): BOOL;   external libname; //stdcall;
function ICQAPICall_GetDockingState(var iDockingState: integer): BOOL; external libname; stdcall;
function ICQAPICall_GetFirewallSettings(var oFireWallData: BSICQAPI_FireWallData): BOOL; external libname; stdcall;
function ICQAPICall_GetFullOwnerData(var ppUser: BSICQAPI_User; iVersion: integer): BOOL; external libname; stdcall;
function ICQAPICall_GetFullUserData(var pUser: BSICQAPI_User; iVersion: integer): BOOL; external libname; stdcall;
function ICQAPICall_GetOnlineListDetails(var iCount: integer; var ppUsers: BSICQAPI_User): BOOL; external libname; stdcall; 
function ICQAPICall_GetOnlineListHandle(var hWindow: hwnd): BOOL; external libname; stdcall;
function ICQAPICall_GetOnlineListPlacement(iIsShowOnlineList: integer): BOOL; external libname; stdcall; 
function ICQAPICall_GetWindowHandle(var hWindow: hwnd): BOOL; external libname; stdcall;
function ICQAPICall_RegisterNotify(iVersion, iCount: integer; var piEvents: BYTE): BOOL; external libname; stdcall; 
function ICQAPICall_UnRegisterNotify(): BOOL; external libname; stdcall;
function ICQAPICall_SendFile(iPIN: integer; const pszFileNames: pchar): BOOL; external libname; stdcall;
// Version 1.0001
function ICQAPICall_GetOnlineListType(var iListType: integer): BOOL; external libname; stdcall;
function ICQAPICall_GetGroupOnlineListDetails(iGroupCount: integer; var ppGroups: BSICQAPI_Group): BOOL; external libname; stdcall;
function ICQAPICall_SetOwnerState(iState: integer): BOOL; external libname; stdcall;
function ICQAPICall_SetOwnerPhoneState(iPhoneState: integer): BOOL; external libname; stdcall;
function ICQAPICall_SendMessage(iUIN: integer; const pszMessage: Pchar): BOOL; external libname; stdcall;
function ICQAPICall_SendURL(iUIN: integer; const pszMessage: pchar): BOOL; external libname; stdcall;
function ICQAPICall_SendExternal(iUIN: integer; const pszExternal: pchar; const pszMessage: pchar; bAutoSend: BYTE): BOOL; external libname; stdcall;
function ICQAPICall_Generic(iCode: integer; {var?} pInBuffer: pointer; iInSize: integer; var ppOutBuffer: pointer; var iOutSize: integer): BOOL; external libname; stdcall;

procedure ICQAPIUtil_SetUserNotificationFunc(uNotificationCode: UINT; pUserFunc: pointer); external libname; stdcall;

end.

--------------------
Flash ICQ Chuch@"... да как два байта отослать!!!"
PM   Вверх
Gorcer
Дата 3.11.2006, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 30.6.2004
Где: Владивосток

Репутация: нет
Всего: 4



а как этим пользоваться? как получать сообщения? как логинится....очень тяжёлый код, помогите!


--------------------
Больнее всего получить удар от человека которому доверяешь.

<удалено администрацией>
PM MAIL WWW ICQ Skype   Вверх
Stigmat
Дата 4.11.2006, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 19.8.2006

Репутация: нет
Всего: нет



Вот "подправленный" TIcqClient   http://www.vsi.ru/~yegor/files/icqclient.zip ... Должен работать, но лично еще не проверял не до него пока

Добавлено @ 01:34 
2_WGR, Это, что все функции которые содержаться в дллке ? Хмм. я думал и больше будет  smile 

Это сообщение отредактировал(а) Stigmat - 4.11.2006, 01:40
PM MAIL   Вверх
B0P0H
Дата 4.11.2006, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 4.11.2006

Репутация: нет
Всего: нет



Error: received malformed login packet (26.10.2006):

Чтобы TIcqClient снова заработал необходимо выполнить следующее:
Откройте файл ICQClient.pas, найдите в нем этот код (~1981 — 1982):

Код

//SRV_COOKIE
     FUIN  := GetTLVStr(@pkt, T)                //Client's UIN in ASCII format 



И замените его этим:

Код

T := GetInt(@pkt, 2)
     if T = $008e then                 // TLV鳎 [0x008E])
     begin
       Inc(pkt.Len, GetInt(@pkt, 2))  
       FUIN  := GetTLVStr(@pkt, T)
     end else
     if T = $0001 then                 // TLVƑ [0x0001])
       FUIN  := GetWStr(@pkt) 


vot tak vot =) eto dla staroi versii tICQ... no pochemu-to u menia ostautsa gluki s SearchWhitePages.... pomogete?
PM MAIL   Вверх
Gorcer
Дата 4.11.2006, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 30.6.2004
Где: Владивосток

Репутация: нет
Всего: 4



ВОРОН!....маладец!...заработало....я и сотни юзеров моего софта тебе крайне признательны!


--------------------
Больнее всего получить удар от человека которому доверяешь.

<удалено администрацией>
PM MAIL WWW ICQ Skype   Вверх
X2com
Дата 24.2.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 13.2.2007

Репутация: нет
Всего: нет



Я также хочу выразить огромную благодарность Ворону. Я уже думать забыл про то, что есть возможность написать свой icq-клиент. Уже удалил все свои проекты на данную тему. А тут... О чудо! Оно снова работает! Респект тебе огромный!
PM MAIL   Вверх
W4FhLF
Дата 24.2.2007, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: нет
Всего: 121



X2com, да вообще-то за этот патч спасибо надо говорить не какому-нибудь ворону, а INF'у, автору QIP'a, он по просьбе трудящихся указал, что именно надо исправить в TICQClient после изменений в протоколе. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0802 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.