Plugin schreiben - was ist die "main"-Funktion?
-
Nabend,
Ich bin gerade dabei bzw. hab gerade damit angefangen ein plugin für QIP ("Quiet Internet Pager") zu schreiben. Hab mir natürlich die SDK heruntergeladen und bin die gerade mal "durchgegangen" und habe dazu noch ein paar Fragen.
Die SDK enthält natürlich (relativ) viele Funktionen wie z.B.void __stdcall QipPlugin::OnQipMessage(PluginMessage* plugMsg) void QipPlugin::onLoadSuccess() void QipPlugin::onOptions() void __stdcall CreateInfiumPLUGIN(IQIPPlugin** retval, IQIPPluginService* pluginService) BOOL WINAPI DllMain( HINSTANCE hinstDLL, // handle to DLL module DWORD fdwReason, // reason for calling function LPVOID lpReserved ) ULONG __stdcall QipPlugin::Release() ULONG __stdcall QipPlugin::AddRef() HRESULT __stdcall QipPlugin::QueryInterface(REFIID riid, void** ppvObject) PluginInfo* __stdcall QipPlugin::GetPluginInfo()Was die einzelnen Übergabeparameter bedeuten wird in der SDK mehr oder weniger erklärt, doch eine ganz andere Frage, die sich mir stellt ist:
Woher weiß ich, welche Funktionen von QIP aufgerufen werden, sodass mein plugin in Aktion tritt bzw. ich schauen kann wann es in Aktion treten soll?
Also mir fehlt gerade so die Funktion wo ich meine Funktion(en) sozusagen "einhak", sprich eine Art "Main"-Funktion.P.S. Forum passt nicht ganz, aber wusste auch kein besseres
-
Naja, du hast halt eine Dll, QIP wird deine Funktionen aufrufen, wann es will
Du hast halt keinen sequentiellen Ablauf wie in konventionellen Programmen, sondern einzelne deiner Funktionen werden einfach irgendwann aufgerufen. In der Doku (falls es eine gibt) wird näheres stehen, es gibt normalerweise immer Funktionen, mit denen du deine internen Daten initialisiert oder de-initialisierst.
-
Also kann ich davon ausgehen, dass die Funktionen aufjedenfall aufgerufen werden, nur wann weiss ich halt nicht. Denke auch mal, jede Funktion wird an einem anderen Zeitpunkt aufgerufen..
Danke
-
das ganze ding sieht nach COM- Programmierung aus, wenn ich die Funktionen Addref und Release sehe...
WEnn du bspw. ein ACtiveX progrmmierst, wird diese ActiveX intialiserst sobalt es in dem Basis-Programm angezeigt oder geladen wird, da wo es eingefügt wurde..
Und die Funktionen werden nicht einfach irgendwann aufgerufen.. denke mal das man die Release funktion erst aufgerufen wirde, wenn das Objekt auch vorher mit AddRef initalisert wurde.. etc.