Delphi-PRAXiS
Seite 2 von 3     12 3      

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

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

RomanK 8. Jul 2002 17: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 17: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 17: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 18: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 19: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 14: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 01: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 21: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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:19 Uhr.
Seite 2 von 3     12 3      

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 by Thomas Breitkreuz