Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

noisy

SDK. delphi 2 C++..czyli kto mi przetłumaczy kod?

Rekomendowane odpowiedzi

więc poprostu chodzi o to, czy znajdzie się ktoś kto mógł by przetłumaczyć SDK z Delphi na C++ (albo chociaż część???)

Bo jakoś nie uśmiecha mi sie uczyć nowego języka....

 

oto całe SDK:

SDK dla komunikatora AQQ - opracował Oconnel [Daniel Zaborowski] v.1.2
Numer wersji SDK : v1.2
aqq.wapster.pl

SDK zostało przygotowane pod kątem języka wysokiego poziomu firmy Borland - Delphi. Proszę pamiętać że kod napisany w Delphi można również kompilować w środowisku Borland Builder C++. SDK nie jest jeszcze kompletne. Nie zawiera jeszcze instrukcji na temat tworzenia pluginów sieciowych.

Aby napisać nowy plugin w AQQ otwieramy nowy projekt w trybie biblioteki DLL. Na początku w otwartym unit-cie deklarujemy następujące zmienne:

const
 PLUGIN_TYPE = 0;
 PLUGIN_NAME = 'Testowy plugin dla AQQ';
 REG_PATH_1 = 'Software\WapSter\Akuku\';
 REG_PATH_2 = '\Ustawienia';
 GLOBAL_PATH = 'Software\WapSter\Akuku';
 PLUGIN_UNLOAD = 0;
 PLUG_TEST1 = 1;
 PLUG_TEST2 = 2;

Stała PLUGIN_TYPE określa typ pluginu. Możliwe rodzaje są następujące :

·  0 - zwykły plugin dołączony do menu komponentów

·  1 - plugin sieciowy (stosujemy przy pisaniu pluginów sieciowych)

·  2 - plugin kontaktu - tworzy się w menu podręcznym kontaktu (przydatny przy pisaniu pluginów p2p)

·  4 - zwykły plugin z flagą automatycznego załadowania do pamięci

·  5 – plugin który będzie widoczny na liście kontaktów

Stała PLUGIN_NAME określa nazwę pluginu. Stała REG_PATH_1, REG_PATH_2, i GLOBAL_PATH pomagają w odnajdywaniu ustawień dla konkretnego użytkownika AQQ. Zajmiejmy się tym później. PLUGIN_UNLOAD zawiera zmienną oznaczającą że plugin ma wyładować się z pamięci. Natomiast PLUG_TEST1, PLUG_TEST2 określają kolejne ID pluginów wewnątrz biblioteki DLL. Należy stosować więcej niż jedną taką stałą tylko w przypadku pluginów typu 0 i 4.

PROCEDURY I FUNKCJE PLUGINU WYWOŁYWANE PRZEZ APLIKACJE AQQ

function GetPluginName(Index: Integer): ShortString; register;
begin
 case Index of
PLUG_TEST1 : Result := PLUGIN_NAME;
 else
Result := '';
 end;
end;

Funkcja ta zwraca AQQ nazwę pluginu o podanym ID (PLUG_TEST1, PLUG_TEST2).

function GetPluginIcon(var PluginIcon: TIcon; Index: Integer): Boolean; register;
begin
Result := True;
if Assigned(dmMain) then
 begin
case Index of
  PLUG_RESPONDER : dmMain.ilIkony.GetIcon(0, PluginIcon);
else
  Result := False;
end;
 end;
end;


Funkcja zwraca ikonkę dla pluginu o podanym ID. W powyższym wypadku plugin zwraca ikonkę zawartą w komponencie ImageList w module dmMain.

function GetPluginKind: Integer; register;
begin
 Result := PLUGIN_TYPE;
end;

Funkcja zwraca AQQ rodzaj pluginu - czyli stałą PLUGIN_TYPE.

procedure AliveExt(Instance: THandle; AQQNumber: Integer; AppPath, SkinPath: ShortString); register;
begin
end;

Funkcja jest bardzo istotna. I tak po kolei, Instance zwraca THandle (HWND) aplikacji AQQ. AQQNumber oznacza ID użytkownika AQQ. I tutaj możemy użyć tego w połączeniu ze zmiennymi odpowiedzialnymi za rejestr systemowy. Np. Rejestr := REG_PATH_1 + IntToStr(AQQNumber) + REG_PATH_2 da nam ścieżkę do ustawień w rejestrze związanych z danym profilem AQQ. Następnie mamy zmienną AppPath określającą położenie pliku Akuku.exe na dysku komputera. SkinPath określa ścieżkę do używanej skórki.

procedure Init(Command: ShortString; Index: Integer); register;
begin
case Index of
 PLUG_TEST1:
begin
  if not Assigned(frmMain) then
	begin
	  frmMain := TfrmMain.Create(nil);
	end;
  frmMain.Show;
end;
end;


Inicjalizuje ona konkretne pluginy. W powyższym przykładzie uruchomi ona plugin PLUG_TEST1 (formatka frmMain).

procedure InitContact(Network: ShortString; UID: Integer; FromPlugin: Boolean; Index: Integer); register;

Jeśli tworzymy plugin kontaktu (typ 2), to umieszczając tą procedurę wewnątrz biblioteki dostaniemy powiadomienie o aktywacji pluginu jak to ma miejsce w przypadku procedury "Init". Tylko że ta dotyczy pluginów o typie 2. Zmienna "Network" oznacza z jakiej sieci pochodzi kontakt, UID określa jego identyfikator numeryczny, a zmienna "FromPlugin" jest równa TRUE jeśli kontakt pochodzi z pluginu sieciowego. Ponadto zmienna "Index" oznacza numer wywoływanego pluginu wewnętrzengo.

procedure Unload(Index: Integer); register;
begin
case Index of
 PLUGIN_UNLOAD, PLUG_TEST1:
begin
  if Assigned(frmMain) then
	begin
	  frmMain.Close;
	end;
end;
end;

Procedura wyładowuje konkretne pluginy, lub wszystkie łącznie jeśli Index jest równy PLUGIN_UNLOAD.

procedure ChangeState(Network, State: ShortString; Note: String); register;
begin
end;

Jeśli umieścimy tą procedurę w kodzie naszego pluginu będziemy dostawać powiadomienia o zmienie stanów użytkownika AQQ (lokalnego - aktywny profil). Zmienna Network oznacza sieć której dotyczy zmiana, State oznacza nowy status użytkownika i zmienna Note zawiera opis.

procedure ContactState(Network: ShortString; Packet: TPakietNotify_V4; var Note: String; OrginalID: ShortString; FromPlugin: Boolean); register;
begin
end;

Jeśli umieścimy tą procedurę w kodzie naszego pluginu będziemy dostawać powiadomienia o zmienie stanów naszych kontaktów. Zmienna Network oznacza sieć do której należy kontakt. Rekord "Pakiet" zawiera dane na temat kontaktu. Zmienna "Note" zawiera opis kontaktu. Zmienna "OrginalID" zawiera tekstowe ID kontaktu, a zmienna "FromPlugin" określa czy kontakt pochodzi z plugin-u sieciowego.

function InMsg(Network: ShortString; var Packet: TPakietMessage; var Msg: TMsgArray; var OrginalID: ShortString; FromPlugin: Boolean): Boolean; register;
begin
end;

Jeśli umieścimy tą funkcję w bibliotece DLL, to będziemy otrzymywać informacje na temat nowych wiadomości. Możemy zablokować jej dostarczenie zwracając wynik funkcji jako FALSE. Zmienna "Network" i "Packet" zawierają informacje na temat pochodzenia wiadomości. Zmienna "Msg" zawiera tekst nowej wiadomości. Zmienna "OrginalID" zawiera tekstowe ID kontaktu, a zmienna "FromPlugin" określa czy kontakt pochodzi z plugin-u sieciowego.

function OutMsg(Network: ShortString; var Packet: TPakietNewMessage_v2; var Msg: TMsgArray; var OrginalID: ShortString): Boolean; register;
begin
end;

Jeśli umieścimy tą funkcję w bibliotece DLL, to będziemy otrzymywać informacje na temat wychodzących wiadomości. Możemy zablokować jej dostarczenie zwracając wynik funkcji jako FALSE. Zmienna "Network" i "Packet" zawierają informacje na temat pochodzenia wiadomości. Zmienna "Msg" zawiera tekst nowej wiadomości. Zmienna "OrginalID" zawiera tekstowe ID kontaktu.

procedure RefreshListExt(Handle: THandle; ItemRect: TRect; BackColor: TColor; var NewHeight: Integer); register;

begin
end;

Tylko dla pluginów na liście kontaktów (typ=5). AQQ wywoła tą procedure gdy będzie wymagać odrysowania zawartości wyświetlacza pluginu. „Handle” to uchwyt do kanwy wyświetlacza (Tcanvas), „ItemRect” zawiera koordynaty wyświetlacza, „BackColor” to kolor który użytkownik ustawi sobie jako tło listy kontaktów, natomiast zmiana „NewHeight” powoduje ustalenie nowej wysokości wyświetlacza.

procedure ListExtOnClick(Button: TMouseButton; X, Y: Integer); register;

begin
end;

Tylko dla pluginów na liście kontaktów (typ=5). AQQ wywoła tą procedure gdy użytkownik kliknie myszką na wyświetlaczu. Zmienna „Button” mówi nam o tym który klawisz muszy został użyty, „X” i „Y” to koordynaty kliku.

procedure ListExtOnDblClick(X, Y: Integer); register;

begin
end;

Tylko dla pluginów na liście kontaktów (typ=5). AQQ wywoła tą procedure gdy użytkownik kliknie podwójnie myszką na wyświetlaczu. „X” i „Y” to koordynaty kliku.

procedure ListExtMouseMove(X, Y: Integer); register;

begin
end;

Tylko dla pluginów na liście kontaktów (typ=5). AQQ wywoła tą procedure gdy użytkownik będzie poruszał myszką nad okienkiem wyświetlacza pluginu. „X” i „Y” to koordynaty pozaycji kursora nad wyświetlaczem.

PROCEDURY I FUNKCJE WYWOŁYWANE W APLIKACJI AQQ

TPluginSetNote = procedure(Tekst: ShortString); stdcall;

Procedura pozwala na zmianę opisu użytkownika. W zmiennej "Tekst" umieszczamy nowy opis (max. 255 znaków).

TPluginSendMessage = function(Network: ShortString; UIN: Cardinal; Msg: String; OrginalID: ShortString; NotSend, NotArchive: Boolean): Boolean; stdcall;

Funckcja pozwala na wysłanie wiadomości do wybranej sieci (zmienna "Network"). Zmienna "UIN" zawiera numeryczne ID użytkownika, a zmienna "OrginalID" tekstowe. W zmiennej "Msg" umieszczamy tekst wysyłanej wiadomości. Zmienna "NotSend" określa czy nie należy wiadomości wysyłać (jeśli wysyłamy to pole = False), natomiast zmienna "NotArchive" określa czy wiadomość ma zostać archiwizowana (False jeśli tak). Jeśli funkcja zwraca FALSE oznacza to brak możliwości wysłania naszej wiadomości.

TPluginGetUserInfo = function(Network: ShortString; UID: Integer; FromPlugin: Boolean): TUserPluginInfo; stdcall;

Funkcja zwraca dane na temat kontaktu po podanych parametrach. "Network" oznacza sieć do której przynależy kontakt, "UID" oznacza identyfikator kotnaktu, a zmienna "FromPlugin" powinna zawierać TRUE jeśli kontakt pochodzi z pluginu siecowiego.

TSayThis = procedure(Tekst: ShortString); stdcall;

Jeśli synteza mowy AQQ jest aktywna, możemy wywołać powyższą procedurę w celu użycia syntezatora mowy. Wymówi on treść zmiennej "Tekst".

TPluginFreeMe = procedure(Instance: THandle); stdcall;

Jeśli chcemy wyładować plugin z pamięci AQQ (całkowicie) to możemy wywołać tą funkcje i podając w parametrze „Instance” hInstance biblioteki DLL.

TPluginGetApp = function: TApplication; stdcall;

Zwraca dodatkowe informacje o aplikacji w strukturze TApplication.

TPluginRepaint =  procedure(Instance: THandle); stdcall;

Prosi aplickaje aby odrysowała plugin typu „5” (czyli na liście kontaktów) bo nastąpiła jakaś widoczna zmiana.

TPluginSetListCursor =  procedure(DLLInstance: THandle; Cursor: TCursor); stdcall;



Prosi aplikacje o zmiane wyglądu kursora znajdującego się nad pluginem nr. „5” (na liście kontaktów)

PROCEDURY I FUNKCJE WYWOŁYWANE PRZEZ APLIKACJE AQQ TYLKO W RAMACH PRACY NA PLUGINACH SIECIOWYCH

function Init(Instance: THandle): Boolean; stdcall;

begin

 AppHandle := Instance;

end;



Tutaj następuje start pluginu. Otrzymuje on od aplikacji jedynie jej uchwyt w postaci zmiennej Thandle. Możemy tutaj zainicjalizować jakieś dodatkowe zmienne.

function GetPluginInfo: TNetPlugin; stdcall;

begin



 with Result do

begin

  Name	   := PLUGIN_NAME;

  Network	:= PLUGIN_NETWORK;

  Author	 := PLUGIN_AUTHOR;

  Version	:= PLUGIN_VERSION;

  AQQVersion := PLUGIN_AQQ_VERSION;

  UID		:= PLUGIN_UID;

  IDText	 := PLUGIN_IDTEXT;

  ServerMode := PLUGIN_SERVERMODE;

end;



end;



Tutaj musimy poinformować AQQ jakich dokładnie parametrów współpracy oczekujemy. I tak, „Name” zawiera nazwę naszego pluginu, tytuł (np. „Plugin MSN”). Dalej „Network” zawiera nazwe sieci czyli np. wpisujemy tam „Yahoo”. Patrząc dalej mamy pola „Author” i „Version” które nie wymagają komentarza. Pole „AQQVersion” zawiera informacje jakiej wersji minimalnej AQQ wymaga nasz plugin. Wersje podajemy w następującym formacie np. 1.0.4.300



Kolejnym polem jest „UID”. To pole chyba jest najważniejsze bo po tym polu AQQ będzie rozpoznawało plugin i jego kontakty w dalszej pracy. Należy dobrze przemyśleć nazwę, musi być z dużych liter np. „MSN” bądź „YAHOO”, albo „IRC”. Ale musi też być unikalna. Prosze nie korzystać z nazw takich jak „AQQ”, „TLEN”, „WPK”, „ICQ”, „GG” bo są one już zajęte. Ale nic nie stoi na przeszkodzie aby nazwa wyglądało np. tak „TLEN2” etc. Wymyślcie jakiś unikatowy identyfikator i trzymajcie się go w swoich dlaszych wersjach tego samego pluginu sieciowego.



Kolejne pole to „IDText” determinuje ono czy sieć identyfikuje swoich użytkowników alfanumerycznie (czyli loginy tekstowe np. sieć Tlen) czy też numerycznie (jak np. sieć ICQ, AQQ).



Pole „ServerMode” jest też istotne. Mówi ono o tym czy kontakty mogą być usuwane tylko gdy użytkownik jest aktualnie podłączony do naszej sieci komunikacyjnej. Wymaga tego pratycznie każda sieć oparta na Jabberze.

procedure SendPluginMessage(Login: ShortString; Tekst: String); stdcall;

begin

end;



AQQ wywoła tą procedurę gdy użytkownik wyślę wiadomość do kontaktu w obrębie naszej sieci. „Login” to identyfikator numeryczny bądź alfanumeryczny a zmienna „Tekst” zawiera tekst wiadomości którą należy wysłać.

function GetPluginStates: TNetStatePluginArray; stdcall;

begin

end;



AQQ wywoła tą funckje aby pozyskać liste stanów które obsługuje sieć, ich nazwy, identyfikatory oraz ikony. Jak widać jest to array pewnej struktury której deklaracje znajdziecie na dole tego SDK (razem z opisem pól).

procedure DeleteUser(Login, UID: ShortString); stdcall;

begin

end;



AQQ wywoła tą funckje gdy użytkownik poprosi o usunięcie kontaktu. „Login” to identyfikator kontaktu a „UID” to identyfikator naszej sieci.

procedure Login(UID, Login, Pass, CustomServer: ShortString; CustomPort, CallID: Integer); register;

begin

end;



AQQ wywoła tą funckje gdy użytkownik poprosi o zalogowanie do naszej sieci. I tak poszczególne parametry oznaczają :



UID – identyfikator naszej sieci

Login – Login użytkownika

Pass – hasło użytkownika

CustomServer – jeśli pełne pole to użytkownik chcę się łączyć na wskazany serwer

CustomPort – jeśli pełne pole to użytkownik wymaga łączenia pod wskazany port

CallID – początkowy status użytkownika.

procedure Disconnect(UID: ShortString);

begin

end;



AQQ wywoła tą funckje gdy użytkownik poprosi o rozłączenie z siecią.

procedure SimpleSearch(Login, UID: ShortString); stdcall;

begin

end;



AQQ wywoła tą funckje gdy użytkownik poprosi o odnalezienie kontaktu o podanym idnetyfikatorze „Login”, i jeśli takowy kontakt istnieje to plugin powinien dodać go do listy kontaktów, a jeśli nie powinien wyświetlić komunikat o braku możności odnalezienia kontaktu. Jest też do tego specjalna funkcja wywoławacza w AQQ opisana w dalszej części SDK.

procedure NormalSearch(Login, UID: ShortString); stdcall;

begin

end;



AQQ wywoła tą funkcje gdy użtkownik będzie wymagać skomplikowanego wyszukiwania kontaktów. Najczęściej poprostu pokazujemy tutaj okno wyszukiwarki. Zmienna „Login” powinna być pusta i nie bierzemy jej pod uwagę.

function GetSearchIcon(UID: ShortString): TIcon; stdcall;

begin

end;



Tutaj AQQ prosi o zwrot ikony reprezentującej wyszukiwanie kontaktów.

function GetGreyIcon(UID: ShortString): TIcon; stdcall;

begin

end;



Tutaj AQQ prosi o zwrot ikony reprezentującej kontakt „nie aktywny”.

function GetUnknownIcon(UID: ShortString): TIcon; stdcall;

begin

end;



Tutaj AQQ prosi o zwrot ikony reprezentującej kontakt którego stan nie jest znany.

procedure State(UID: ShortString; CallID: Integer); register;

begin

end;



Tutaj użytkownik wymaga zmiany stanu na nowy wskazany w zmiennej „CallID”.

procedure SetNoteState(UID: ShortString; CallID: Integer; Note: String); register;

begin

end;



Tutaj użytkownik wymaga zmiany stanu na nowy wskazany w zmiennej „CallID”, razem ze statusem opisowym „Note”.

PROCEDURY I FUNKCJE WYWOŁYWANE W APLIKACJI AQQ PRZEZ PLUGINY SIECIOWE

TPluginOnBadLogin = procedure(UID: ShortString); stdcall;



Wywołujemy gdy użytkownika nie udało się zalogować do sieci np. z powodu błędego loginu lub hasła. AQQ wyświetli wtedy odpowiedni komunikat. UID to identyfikator sieci czyli np. „MSN”, czy „YAHOO”.

TPluginOnConnect = procedure(UID: ShortString); stdcall;



Wywołujemy gdy użytkownik został podłączony do sieci komunikacyjnej. UID to identyfikator sieci.

TPluginOnConnecting = procedure(UID: ShortString); stdcall;



Wywołujemy gdy użytkownik jest w trakcie łączenia się do sieci komunikacyjnej. UID to identyfikator sieci.

TPluginOnDeleteContact = procedure(UID, Login: ShortString); stdcall;



Wywołujemy gdy checmy usunąć kontakt z listy. UID to nazwa sieci (może to być sieć jedynie pochodząca z naszego bądź obcego pluginu) natomiast „Login” zawiera indetyfikator użytkownika. Przykładowo identyfikator ten może być numeryczny lun alfanumryczny w zależności od tego, jaki typ obsluguje nasza sieć. W obu przypadkach jednak identyfikator ten podajemy jako ShortString.

TPluginOnDisconnect = (UID: ShortString); stdcall;



Wywołujemy gdy użytkownik rozłączył się z siecią komunikacyjną. AQQ ustawi wszystkie kontakty powiązane z tą siecią w tryb OFFLINE, i zmieni ikonkę stanu na ten sam tryb. UID to identyfikator naszej sieci.

TPluginOnMessage = procedure(UID, From: ShortString; Tekst: String; Stamp: TDateTime); stdcall;



Wywołujemy gdy użytkownik otrzymał nową wiadomość tekstową. UID to identyfikator naszej sieci. „From” to identyfikator numeryczny lub alfanumeryczny kontaktu, „Tekst” zawiera treść wiadomości, natomiast „Stamp” zawiera date wysłania wiadomości.

TPluginOnMyState = procedure(UID: ShortString; CallID: Integer); stdcall;



Wywołujemy gdy użytkownik zmienił swój status (nie kontakt!). „UID” to nazwa sieci komunikacyjnej a „CallID” to identyfikator nowego stanu.

TPluginOnNewContact = procedure(UID, Login: ShortString); stdcall;



Wywołujemy gdy chcemy dodać nowy kontakt do listy. „UID” to identyfikator naszej sieci, „Login” to identyfikator numryczny lub alfanumryczny nowego kontaktu.

TPluginOnNotFound = procedure(UID, Login: ShortString); stdcall;



Wywołujemy gdy chcemy aby AQQ wyświetliło komunikat o nie udanej próbie znalezienia kontaktu w wyszukiwarce (tylko jeśli sami tego nie oprogramujemy w naszej bibliotece). „UID” to identyfikator naszej sieci, a „Login” to identyfikator numryczny lub alfanumeryczny kontaktu.

TPluginOnUserState = procedure(UID, Login, Status: ShortString; CallID: Integer); stdcall;



Wywołujemy gdy któryś z kontaktów zmienił swój status. „UID” to nazwa sieci, „Login” to identyfikator numeryczny lub alfanumeryczny kontaktu. „Status” zawiera opis do statusu (jeśli wystąpi) a „CallID” zawiera nowy status kontaktu.

TYPY REKORDOWE, STAŁE - OMÓWIENIE

Możliwe wartości zmiennej "Network" :

·  "AQQ" - sieć Akuku

·  "ICQ" - sieć I seek You

·  "GG" - sieć Gadu-Gadu

·  "WPK" - sieć WP-Kontakt

·  "TLEN" - sieć Tlen.pl

Możliwe wartości zmiennej "State" i statusów użytkownika :

·  ·  "ONLINE" - Połączony

·  "FREEFORCHAT" - Wolny

·  "AWAY" - Oddalony

·  "NA" - Nieobecny

·  "OCCUPIED" - Zajęty

·  "DND" - Nie przeszkadzać

·  "INVISIBLE" - Niewidoczny, ukryty

·  "UNKNOWN" - Nieznany stan

·  "OFFLINE" - Niedostępny, rozłączony

Typ zwracający informacje o użytkowniku :

Type

 TMsgArray = array [0..2000] of Char;


type
 TUserPluginInfo = packed record
AqqNumber : Integer; // Numer AQQ
UserIP : ShortString; // Adres IP kontaktu
FirstName : ShortString; // Pierwsze imie
SecondName : ShortString; // Drugie imie
SurName : ShortString; // Nazwisko
NickName : ShortString; // Pseudonim
PrimaryMail : ShortString; // Adres e-mail
SecondaryMail : ShortString; // Alternatywny adres e-mail
PhoneHome : ShortString; // Telefon domowy
PhoneCellular : ShortString; // Telefon komórkowy
Fax : ShortString; // FAX
Pager : ShortString; // Pager
StreetHome : ShortString; // Ulica
NumberHome : ShortString; // Numer lokalu
CityHome : ShortString; // Miasto
ZipCode : ShortString; // Kod pocztowy
Country : ShortString; // Kraj
HomePage : ShortString; // Strona domowa WWW
Lenguage1 : ShortString; // Język w którym potrafi rozmawiać kontakt
Lenguage2 : ShortString; // Język w którym potrafi rozmawiać kontakt
Lenguage3 : ShortString; // Język w którym potrafi rozmawiać kontakt
Hobby1 : ShortString; // Hobby
Hobby2 : ShortString; // Hobby
Hobby3 : ShortString; // Hobby
Avatar : ShortString; // Adres URL do Avatara
Info : ShortString; // Krótka informacje (max. 800 znaków)
UserState : ShortString; // Status użytkownika
BornYear : Integer; // Rok urodzenia
BornMonth : Byte; // Miesiąc urodzenia
BornDay : Byte; // Dzień urodzenia
Years : Byte; // Wiek
ICQUIN : Cardinal; // Numer ICQ
ICQ_State : ShortString; // Status ICQ
GGUIN : Cardinal; // Numer GG
GG_State : ShortString; // Status w sieci GG
Sex : ShortString; // Płeć
ContactType : ShortString; // Typ kontaktu (Network)
OrginalID : ShortString; // Tekstowe ID kontaktu
NumberID : Cardinal; // Identyfikator kontaktu
 end;



type

 TPakietMessage = packed record

MessageID: Integer;

FromUIN: Integer;

Date: TDateTime;

Nickname: array [0..50] of Char;

Mail: array [0..254] of Char;

 end;



type

 TPakietNewMessage_v2 = packed record

FromUIN: LongInt;

ToUIN: LongInt;

Passcode: array [0..64] of Char;

Nickname: array [0..50] of Char;

Mail: array [0..254] of Char;

Date: TDateTime;

Advanced: Boolean;

 end;



type

 TNetPlugin = packed record

Name	   : ShortString; // Nazwa pluginu

Network	: ShortString; // Nazwa sieci -> WP Kontakt, Tlen

Author	 : ShortString; // Autor pluginu

Version	: ShortString; // Wersja pluginu

AQQVersion : ShortString; // Minimalna wymagana wersja AQQ

UID		: ShortString; // Nazwa UIDu -> np. WPK

IDText	 : Boolean;	 // Czy ID usera jest tekstowe?

ServerMode : Boolean;	 // Czy lista kontaktów jest na serwerze? (tryb usuwania)

 end;



type

 TNetStatePlugin = packed record

Name   : ShortString;	 // Nazwa stanu -> Połączony

UID	: ShortString;	 // UID stanu -> ONLINE

CallID : Integer;		 // CallID -> ID wywoławcze numeryczne

Icon   : TIcon;		   // Ikonka stanu

Position : Integer;	   // Pozycja w ImageLiście <- parametr ustawiany po stronie aplikacji (nic tutaj nie podajemy sami)

 end;



type

 TNetStatePluginArray = array of TNetStatePlugin;



type

 TPakietNotify_V4 = packed record

UIN: LongInt;

Status: array [0..20] of Char;

AdresIP: array [0..15] of Char;

Port: array [0..20] of Char;

Avatar: array [0..255] of Char;

WebCam: LongInt;

Points: LongInt;

 end;



UWAGI KOŃCOWE

Proszę pamiętać aby wszystkie procedury i funkcje które wywołuje AQQ z waszego pluginu, zostały odpowiednio zadeklarowane. Proszę pamiętać aby ich nazwy umieścić również w klauzuli "register" znajdującej się w kodzie plugin-a. Przykładowe wtyczki wraz z kodem źródłowym są zawarte w tym pakiecie SDK, w katalogu "Przykłady".



Jeśli w SDK widzimy deklaracje typu :



TPluginOnNotFound = procedure(UID, Login: ShortString); stdcall;



To oznacza to że nazwa procedury do wywołania w AQQ to “PluginOnNotFound”. Czyli generalnie opuszczamy literkę „T” na początku.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ojj

przykro mi ale chyba Ci nikt nie pomoże...

nie z braku wiedzy tyloko poprostu nikomu się nie chce:P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...