HANDLE FindNetUserHandle(LPCSTR acc) { IJabberInterface *ji = getJabberApi(acc); if (!ji) return NULL; PBYTE m_psProto = *(PBYTE*)((PBYTE)ji + sizeof(*ji)); // see CJabberInterface in jabber_proto.h PHANDLE pResult = (PHANDLE)(m_psProto + // see CJabberProto in jabber_proto.h sizeof(PVOID) + // skip vtable ptr sizeof(PVOID) + // skip m_ThreadInfo SIZE_OF_JABBER_OPTIONS); // skip m_options //for (int i=0; i < 100; i++) { // __try { // if (GetNetlibHandleType(*pResult) == NLH_USER) // MessageBox(0, L"1", L"1", 0); // } // __except (EXCEPTION_EXECUTE_HANDLER){ // AllocConsole(); // } // pResult++; //} if (GetNetlibHandleType(*pResult) != NLH_USER) pResult += 4; if (GetNetlibHandleType(*pResult) != NLH_USER) pResult += 4; if (GetNetlibHandleType(*pResult) != NLH_USER) pResult += 4; assert(GetNetlibHandleType(*pResult) == NLH_USER); return *pResult; }
HANDLE FindNetUserHandle(LPCSTR acc) { IJabberInterface *ji = getJabberApi(acc); if (!ji) return NULL; return ji->GetHandle(); }
LPCSTR GetJidAcc(LPCTSTR jid) { int count = 0; PROTOACCOUNT **protos; Proto_EnumAccounts(&count, &protos); for (int i = 0; i < count; i++) { if (getJabberApi(protos[i]->szModuleName)) { ptrT tszJid(db_get_tsa(0, protos[i]->szModuleName, "jid")); if (!mir_tstrcmpi(jid, tszJid)) return protos[i]->szModuleName; } } return NULL; }
static void sttCreateInstance(LPCSTR szModuleName) { IJabberInterface *japi = getJabberApi(szModuleName); if (japi == NULL) return; ptrA host(db_get_sa(NULL, szModuleName, "ManualHost")); if (host == NULL || strcmp(host, "talk.google.com")) return; GoogleTalkAcc *gta = new GoogleTalkAcc(); gta->m_japi = japi; gta->m_pa = ProtoGetAccount(szModuleName); g_accs.insert(gta); // Google Shared Status (http://code.google.com/apis/talk/jep_extensions/shared_status.html) japi->AddIqHandler(::OnIqResultGoogleSharedStatus, JABBER_IQ_TYPE_SET, JABBER_FEAT_GTALK_SHARED_STATUS, NULL); japi->AddIqHandler(::OnIqResultGoogleSharedStatus, JABBER_IQ_TYPE_GET, JABBER_FEAT_GTALK_SHARED_STATUS, NODENAME_QUERY); japi->AddSendHandler(SendHandler); }