Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Informationen des ausgewählten Users.
#35
Hey,
also ich habe folgende Funktion:
[c]
static void call_user(PurpleBlistNode *node) {
PurpleAccount *acc = NULL;
PurpleConnection *gc = NULL;
PurplePlugin *prpl = NULL;
PurplePluginProtocolInfo *prpl_info = NULL;
PurpleNotifyUiOps *ops;

purple_debug_warning("plugin-call-a-buddy", "Variablen wurden initialisiert.\n");

const char *name = NULL;

PurpleBuddy *buddy = (PurpleBuddy*) node;
acc = purple_buddy_get_account(buddy);

purple_debug_warning("plugin-call-a-buddy", "Node Konvertiert und Acc geholt.\n");

gc = acc->gc;
purple_debug_warning("plugin-call-a-buddy", "GC wird geholt.\n");
if(!gc) {
return;
}

prpl = purple_connection_get_prpl(gc);
purple_debug_warning("plugin-call-a-buddy", "Hole Protocol.\n");

if(!prpl) {
return;
}

prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
purple_debug_warning("plugin-call-a-buddy", "Plugin_Protocol_INFO wird geholt. \n");

if(!prpl_info || !prpl_info->get_info) {
return;
}

ops = purple_notify_get_ui_ops();
purple_debug_warning("plugin-call-a-buddy", "Notify_Get_UI_Ops \n");

notify_userinfo_ori = ops->notify_userinfo;
// purple_debug_warning("plugin-call-a-buddy", (char*)*notify_userinfo_ori);

/*
* ops = purple_notify_get_ui_ops();
* notify_userinfo_ori = ops->notify_userinfo;
* ops->notify_userinfo = birthday_reminder_notify_userinfo;
*/

//Erstellt Funktionszeiger.
ops->notify_userinfo = call_a_buddy_notify_userinfo;
// purple_debug_warning("plugin-call-a-buddy", "Birthday_Reminder_Notify_Userinfo \n");

prpl_info->get_info(gc, name);
purple_debug_warning("plugin-call-a-buddy", "Entsprechende Infos werden ermittelt \n");

if(!PURPLE_BLIST_NODE_IS_BUDDY(node)) {
purple_debug_fatal("plugin-call-a-buddy", "Es wird versucht einen Nicht-User anzurufen.\n");
return;
}
test();
}
[/c]
In dieser wird der Zeiger umgebogen und auch die get_info aufgerufen.

Das hier ist die Funktion, die aufgerufen wird anstelle von displaying_userinfo..
[c]
static void *call_a_buddy_notify_userinfo(PurpleConnection *gc, const char *who, PurpleNotifyUserInfo *user_info) {
purple_debug_warning("plugin-call-a-buddy", "In der Funktion ..._notify_userinfo");
purple_debug_warning("plugin-call-a-buddy", who);
/* Info-Fenster unterdrücken */
return NULL;
}
[/c]

Wenn ich nun in Pidgin auf meinen Menü-Punkt klicke, bekomme ich folgende Ausgabe:
Zitat:(12:06:30) plugin-call-a-buddy: Node Konvertiert und Acc geholt.
(12:06:30) plugin-call-a-buddy: GC wird geholt.
(12:06:30) plugin-call-a-buddy: Hole Protocol.
(12:06:30) plugin-call-a-buddy: Plugin_Protocol_INFO wird geholt.
(12:06:30) plugin-call-a-buddy: Entsprechende Infos werden ermittelt
(12:06:30) plugin-call-a-buddy: Notify_Get_UI_Ops
Wenn ich nun aber auf Info abrufen klicke, bekomme ich die Ausgabe, die in der Funktion generiert wird.

Das Plugin stürzt auch nicht mehr ab auch bei mehrfachem Aufruf. Big Grin

Zitat:Kann man denn mit dem Visual Studio debuggen?
Soweit ich weiß leider nicht.
Zitieren


Nachrichten in diesem Thema
RE: Informationen des ausgewählten Users. - von jamesv1994 - 02.10.2013, 13:13

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste