Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ICQ - API (https://www.delphipraxis.net/367-icq-api.html)

Yheeky 7. Jul 2002 17:17


ICQ - API
 
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

MathiasSimmack 7. Jul 2002 19:07

Re: ICQ - API
 
Zitat:

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.

Yheeky 7. Jul 2002 19: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

Mr_T 7. Jul 2002 21: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 :roll: Mfg, sakura[/edit]

Yheeky 7. Jul 2002 23:17

Hey, SUPER Mr_T...sowas habe ich gesucht. Ich teste das dann mal eben aus und melde mich dann nochmal. DANKE!

Gruß Yheeky

Yheeky 7. Jul 2002 23:24

Mhmm, ich bekomme die ganze Zeit die Fehlermeldung:
Funktion benötigt Ergebnistyp :cry:
Woran liegt das? Ich habe jetzt einfach mal den kompletten ersten Code in eine neue Unit eingebaut.

Gruß Yheeky

jbg 8. Jul 2002 00: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.

MathiasSimmack 8. Jul 2002 05: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.

Yheeky 8. Jul 2002 09: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

Mr_T 8. Jul 2002 10: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........

Yheeky 8. Jul 2002 14:24

Hey! Dazu habe ich sogar die passende Dll-Datei! Super danke!
Jetzt habe ich nur ein Problem mit dem Umgang der Funktionen. Ich wollte einfach mal die GetVersion-Funktion aufrufen, aber da kam gleich ein Fehler:

Code:
Form1.Caption := ICQMAPI_API.ICQAPICall_GetVersion(0);
Die normale Funktion lautet:

Code:
function ICQAPICall_GetVersion(var iVersion: integer): BOOL; stdcall;
Ich verstehe den Parameter sowieso nicht, aber irgendwie weiss ich nicht so richtig, wie man mit den Funktionen umgeht. Kennt da jemand Beispiele oder so? Ich möchte zu Beginn einfach mal den Status von ICQ über ein eigenes Programm verändern. Weiss jemand, wie das geht?

Gruß Yheeky

RomanK 8. Jul 2002 16:10

Hoi
Das ist einfach, ich hab Code von Wolfskin der den Status und sogar die Away message verändert!!!!

RomanK 8. Jul 2002 16:17

Hier ist mal die Unit die Wolfskin erstellt hat, nachdem das einer im DF gefragt hat:
Delphi-Quellcode:
unit ICQAPI;

interface

uses SysUtils, Registry, Windows;

type
  TICQAPICall_SetLicenseKey = function(pszName, pszPassword, pszLicense: PChar): Boolean; stdcall;
  TICQAPICall_SetOwnerState = function (iState: Integer): Boolean; stdcall;

const
  WM_SETTEXT = $000C;

  USER_STATE_ONLINE = 0;
  USER_STATE_CHAT = 1;
  USER_STATE_AWAY = 2;
  USER_STATE_NA
[edit=alcaeus]Delphi-Tags eingefuegt. Mfg, alcaeus[/edit]

Yheeky 8. Jul 2002 16:36

Danke, der Code funktioniert. Aber in der Unit wird ja überhaupt keine Dll verwendet?! Die Unit arbeitet ja mit der Registry?!
Nichtsdestotrotz interessiert mich, wie ich mit den Funktionen in eienr Dll arbeiten kann, wie ich schon vorher beschrieben habe.
Wäre nett, wenn mir dabei jemand helfen könnte.

Gruß Yheeky

Yheeky 8. Jul 2002 16:40

Oh :lol: da hab ich mich verschaut. Die Dll wird ja geladen...

Aber warum das mit den Funktionen nicht geklappt hat, interessiert mich nach wie vor.

Gruß Yheeky

Mr_T 8. Jul 2002 17:31

Also bei der Funktion

function ICQAPICall_GetVersion(var iVersion: integer): BOOL; stdcall;
aus meiner letzen unit musst du als parameter die integer-variable angeben, in die die versionsnummer geschrieben werden soll (deshalb "var") .... der rückgabewert sagt nur aus, ob das auslesen geklappt hat ....

Ich gebe auf das eben gesagte keine gewähr, aber ich denke, dass es so gehen müsste

Yheeky 8. Jul 2002 18:39

Achso...cool. Wieder was gelernt :) Danke!

Ich habe das mal versucht...

Code:
if ICQMAPI_API.ICQAPICall_GetVersion(Variable) = True then
Form1.Caption := 'Yes';
aber in der FormCaption stand nichts :roll: ...hab ich das so richtig gemacht?

Gruß Yheeky

Yheeky 14. Jul 2002 13:03

Hi,

ich versuch´s nochmal hier, auch wenn der Thread vielleicht schon etwas in Vergessenheit geraten ist...

Ich kann mittlerweile den Status und die Message setzen, das ist kein Problem mehr. Jetzt möchte ich aber beides auslesen. Wie geht das?

Gruß Yheeky

zeeman 5. Okt 2003 00:52

Re: ICQ - API
 
Hi!

Freut mich dass ihr es alle hinbekommen habt.
Ich schaff es nur irgendwie nicht.

Das Problem ist nicht das Aufrufen der Funktion, sondern das Ausführen selbiger.
Es scheint so, als wenn er sich nciht an der API anmelden kann.

Ich hab nach eigenen Experimenten eine Unit mit Mr_Ts letzter Unit-zusammenstellung erstellt.
Mein eigenes Code-Versuch sieht so aus:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
micqapi.ICQAPICall_SetLicenseKey('XXX','XXX','XXX');
micqapi.ICQAPICall_SetOwnerState(BICQAPI_USER_STATE_ONLINE);
end;
ICQ ist auch gestartet, nur halt Offline.
Aber verbinden tut er sich nicht.

Leider hab gibt SetLicenseKey ja nix zu rück um zu überprüfen ob man sich erfolreich an der API angemeldet hat.

Hat jemand dazu noch ne Idee?
Ich will ja eigentlich nur meinen Away-Spruch automatisch ändern lassen.... :hi:

MfG
Sebastian

Wuaegner 1. Okt 2005 20:46

Re: ICQ - API
 
Kann jemand ein Beispiel Posten wie man per Zugriff auf die ICQMAPI.dll die AwayMessage setzen kann?
Die oben genannten Beispiele z.B GetVersion... klappt bei mir, das heißt ohne Fehlermeldung aber die Funktion gibt immer false zurück.

Eichhoernchen 1. Okt 2005 23:15

Re: ICQ - API
 
Zitat:

Zitat von zeeman
Ich will ja eigentlich nur meinen Away-Spruch automatisch ändern lassen.... :hi:


Das geht auch anders! MSDN-Library durchsuchenSendmessage

Wuaegner 2. Okt 2005 19:37

Re: ICQ - API
 
Mich würde es aber mitHilfe der .dll interessieren.
Wie sähe das dann aus?

MrKnogge 2. Okt 2005 20:04

Re: ICQ - API
 
Servus Yheeky,

wo hastn du dir die ICQ-Api gezogen ?

gruss

Joachim Rohde 2. Okt 2005 20:10

Re: ICQ - API
 
http://www.icq.com/api/

Eichhoernchen 2. Okt 2005 20:13

Re: ICQ - API
 
Hmm nee die wird nicht mehr herausgegeben!

Man benötigt einen LIzensschlüssel um die API nutzen zu können.

Ich hatte mal einen, hab ihn aber verlohren.

Ich hatte es auch darmals geschafft Awaymessages zu setzen.
Aber naja ohne Key geht nix!

Wuaegner 3. Okt 2005 17:22

Re: ICQ - API
 
Das ist schade. Nunja kann man nix machen :cry:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz