AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ICQ - API

Ein Thema von Yheeky · begonnen am 7. Jul 2002 · letzter Beitrag vom 3. Okt 2005
Antwort Antwort
Seite 1 von 3  1 23      
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#1

ICQ - API

  Alt 7. Jul 2002, 18:17
Hi,

ich würde gerne mit ICQ kommunizieren. Ich habe mir deswegen die ICQ-API besorgt. Meine Frage ist nun, wie ich damit arbeiten kann bzw. Funktionen aufrufen kann. Ich habe noch nie mit einer API gearbeitet und die Hilfedatei der API hilft mir auch nicht richtig weiter.

Wäre nett, wenn mir jemand helfen könnte, damit ich einen Anfang bekomme *g*. Dann komme ich bestimmt alleine weiter.

Gruß Yheeky
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: ICQ - API

  Alt 7. Jul 2002, 20:07
Zitat von Yheeky:
Ich habe noch nie mit einer API gearbeitet ...
Doch, unter Garantie! Du programmierst doch für Windows, oder? Und manchmal kommst du mit den Kapselungen der Komponenten nicht weiter, so dass du auf API-Befehle zugreifen musst. (SHBrowseForFolder, SHFileOperation, um nur zwei zu nennen, die mir jetzt spontan in den Sinn kamen ...) Bei NonVCL sowieso ...

Zitat:
... und die Hilfedatei der API hilft mir auch nicht richtig weiter.
Die API-Beschreibungen von Microsoft (PSDK, MSDN) sind meist mit C-Beispielen. Ich kenne die ICQ-API nicht, aber es dürfte wohl ähnlich sein sonst hättest du sicher nicht gepostet. Falls du bereits Delphi-Conversions hast, dann verstehe ich das Problem nicht so ganz - in dem Fall findest du in der besagten Hilfe die Auskunft, was die jeweilige Funktion macht. Und durch die Delphi-Syntax müsstest du die Funktionen auch lesen und verstehen können.

Auch bei C-Syntax kann man zumindest an den Funktionsnamen und der Beschreibung in der Hilfe erkennen, wo der Sinn der Funktion liegt. Aber dann bräuchtest du erst mal eine Delphi-Version der API, mit der du vielleicht besser klarkommst.

Meiner Meinung nach (und das soll keine Selbstbeweihräucherung sein) braucht man ein kleines bisschen Erfahrung, um die C-Syntax (im Kopf/auf dem Papier/in einer Dummy-Datei) nach Delphi umzuformen und auszuprobieren.

Erfahrung heißt in dem Fall, dass man (die wichtigsten) C-Deklarationen und ihre Gegenstücke von Delphi kennt. Und natürlich sollte man auch ICQ kennen, die Möglichkeiten usw.

Gruß,
Mathias.
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#3
  Alt 7. Jul 2002, 20:22
Du hast es angesprochen. Das Problem liegt in der Umformung der in der Hilfe beschriebenen Funktionen. Denn wie du schon vermutet hast, sind die Befehle auf C zugeschnitten. Kannst du mir vielleicht ein Beispiel geben, wie man eine Funktion für Delphi umschreiben kann? Weiss nämlich wirklich nicht, wie ich das anstellen kann.

Gruß Yheeky
  Mit Zitat antworten Zitat
Benutzerbild von Mr_T
Mr_T

Registriert seit: 7. Jun 2002
Ort: Eilsum
136 Beiträge
 
Delphi 2005 Personal
 
#4
  Alt 7. Jul 2002, 22:05
Ich weiß nciht, ob es dir hilft, aber ich habe im I-Net mal dies Units gefunden, die scheinbar Übersetzungen einiger dieser C-Files nach Delphi sind:

Delphi-Quellcode:
unit ICQAPICalls;

interface

{$IFNDEF __ICQAPICALLS_H_}
{$DEFINE __ICQAPICALLS_H_}

uses Windows, ICQAPIData;

function ICQAPICall_SetLicenseKey( pszName: PChar;
                                   pszPassword: PChar;
                                   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: PBSICQAPI_User;
                                      iVersion: integer ): BOOL; stdcall;

function ICQAPICall_GetFullUserData( pUser: PBSICQAPI_User;
                                     iVersion: integer ): BOOL; stdcall;

function ICQAPICall_GetOnlineListDetails( var iCount: integer;
                                          var ppUsers: PBSICQAPI_User): BOOL; stdcall;

function ICQAPICall_GetOnlineListHandle( var hWindow: HWND): BOOL; stdcall;

function ICQAPICall_GetOnlineListPlacement( var iIsShowOnlineList: integer): BOOL; stdcall;

function ICQAPICall_GetWindowHandle( var hWindow: HWND): BOOL; stdcall;

function ICQAPICall_RegisterNotify( iVersion: integer;
                                    iCount: integer;
                                    piEvents: PByte): BOOL; stdcall;

function ICQAPICall_UnRegisterNotify: BOOL; stdcall;

function ICQAPICall_SendFile( iPIN: integer;
                              pszFileNames: PChar): BOOL; stdcall;

// Version 1.0001

function ICQAPICall_GetOnlineListType( var iListType: integer): BOOL; stdcall;

type
  PPBPSICQAPI = ^PBPSICQAPI;

function ICQAPICall_GetGroupOnlineListDetails( var iGroupCount: integer;
                                               var ppGroups: PPBPSICQAPI): BOOL;
                                               stdcall;

type
  PPointer = ^Pointer;

function ICQAPICall_Generic( iCode: integer;
                             pInBuffer: Pointer;
                             iInSize: integer;
                             ppOutBuffer: PPointer;
                             var iOutSize: integer): BOOL; stdcall;

const
  ICQMsgAPI = 'ICQMsgAPI.dll';

implementation

function ICQAPICall_SetLicenseKey( pszName: PChar;
                                   pszPassword: PChar;
                                   pszLicense: PChar);
  external ICQMsgAPI name 'ICQAPICall_SetLicenseKey';

function ICQAPICall_GetVersion( var iVersion: integer);
  external ICQMsgAPI name 'ICQAPICall_GetVersion';

function ICQAPICall_GetDockingState( var iDockingState: integer);
  external ICQMsgAPI name 'ICQAPICall_GetDockingState';

function ICQAPICall_GetFirewallSettings( var oFireWallData: BSICQAPI_FireWallData );
  external ICQMsgAPI name 'ICQAPICall_GetFirewallSettings';

function ICQAPICall_GetFullOwnerData( var ppUser: PBSICQAPI_User;
                                      iVersion: integer );
  external ICQMsgAPI name 'ICQAPICall_GetFullOwnerData';

function ICQAPICall_GetFullUserData( pUser: PBSICQAPI_User;
                                     iVersion: integer );
  external ICQMsgAPI name 'ICQAPICall_GetFullUserData';

function ICQAPICall_GetOnlineListDetails( var iCount: integer;
                                          var ppUsers: PBSICQAPI_User);
  external ICQMsgAPI name 'ICQAPICall_GetOnlineListDetails';

function ICQAPICall_GetOnlineListHandle( var hWindow: HWND);
  external ICQMsgAPI name 'ICQAPICall_GetOnlineListHandle';

function ICQAPICall_GetOnlineListPlacement( var iIsShowOnlineList: integer);
  external ICQMsgAPI name 'ICQAPICall_GetOnlineListPlacement';

function ICQAPICall_GetWindowHandle( var hWindow: HWND);
  external ICQMsgAPI name 'ICQAPICall_GetWindowHandle';

function ICQAPICall_RegisterNotify( iVersion: integer;
                                    iCount: integer;
                                    piEvents: PByte);
  external ICQMsgAPI name 'ICQAPICall_RegisterNotify';

function ICQAPICall_UnRegisterNotify;
  external ICQMsgAPI name 'ICQAPICall_UnRegisterNotify';

function ICQAPICall_SendFile( iPIN: integer;
                              pszFileNames: PChar);
  external ICQMsgAPI name 'ICQAPICall_SendFile';

// Version 1.0001

function ICQAPICall_GetOnlineListType( var iListType: integer);
  external ICQMsgAPI name 'ICQAPICall_GetOnlineListType';

function ICQAPICall_GetGroupOnlineListDetails( var iGroupCount: integer;
                                               var ppGroups: PPBPSICQAPI);
  external ICQMsgAPI name 'ICQAPICall_GetGroupOnlineListDetails';

function ICQAPICall_Generic( iCode: integer;
                             pInBuffer: Pointer;
                             iInSize: integer;
                             ppOutBuffer: PPointer;
                             var iOutSize: integer);
  external ICQMsgAPI name 'ICQAPICall_Generic';
{$ENDIF}
[edit=sakura] Delphi-Tags, solange Files auch gerne als Anhang Mfg, sakura[/edit]
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#5
  Alt 8. Jul 2002, 00:17
Hey, SUPER Mr_T...sowas habe ich gesucht. Ich teste das dann mal eben aus und melde mich dann nochmal. DANKE!

Gruß Yheeky
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#6
  Alt 8. Jul 2002, 00:24
Mhmm, ich bekomme die ganze Zeit die Fehlermeldung:
Funktion benötigt Ergebnistyp
Woran liegt das? Ich habe jetzt einfach mal den kompletten ersten Code in eine neue Unit eingebaut.

Gruß Yheeky
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7
  Alt 8. Jul 2002, 01:04
In der Unit ICQAPICalls musst du entweder bei allen Funktionen, die im Impementation Teil stehen die Parameter samt Klammernpaar entfernen, oder du fügst bei jeder dieser Funktionen zwischen ; und external ein : BOOL hinzu.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#8
  Alt 8. Jul 2002, 06:56
Hi Yheeky.

Ich will ja nicht schon wieder auf die JEDIs verweisen, aber dort findest du z.B. ein ICQ-Interface (habe ich gestern nebenbei gesehen, als ich die API-Seite für die RAS-Geschichte rausgesucht habe). Vielleicht ist es ja das, was Mr_T gepostet hat. Aber selbst wenn nicht: du hast dann schon die Umsetzung nach Delphi und könntest mit Hilfe der Dokumentation die Funktionen ausprobieren.

Und es gibt sicher - neben der JEDI-Version - noch andere Varianten.

Gruß,
Mathias.
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#9
  Alt 8. Jul 2002, 10:30
Erstmal danke für die Antworten.
Okay, ich habe mir von der JEDI Seite mal die pas Dateien runtergeladen. Ich wollte die Dateien in mein Programm einbinden, aber ich habe folgende Fehlermeldung bekommen:
[Fehler] ICQAPIData.pas(51): Undefinierter Bezeichner: 'pBSPICQAPI_User'

Ich benötige auch noch die Dll-Datei, die in der pas-Datei verwendet wird (ICQMsgAPI.dll). Vermutlich kommt der Fehler daher...

Gruß Yheeky
  Mit Zitat antworten Zitat
Benutzerbild von Mr_T
Mr_T

Registriert seit: 7. Jun 2002
Ort: Eilsum
136 Beiträge
 
Delphi 2005 Personal
 
#10
  Alt 8. Jul 2002, 11:29
Hmm - habe da noch ne andere Unit gefunden, die aber nicht zu diesen gehört ... sie ist aber ebenfalls eine schnittstelle zur icqmapi.dll .... was genau dioese Unit kann, habe ich nciht ausprobiert:

Code:
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.
Hoffe, du bekommst die Probs in den Griff........
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz