![]() |
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 |
Re: ICQ - API
Zitat:
Zitat:
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. |
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 |
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:
[edit=sakura] Delphi-Tags, solange Files auch gerne als Anhang :roll: Mfg, sakura[/edit]
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} |
Hey, SUPER Mr_T...sowas habe ich gesucht. Ich teste das dann mal eben aus und melde mich dann nochmal. DANKE!
Gruß Yheeky |
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 |
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.
|
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. |
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 |
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:
Hoffe, du bekommst die Probs in den Griff........
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 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 by Thomas Breitkreuz