本文整理汇总了C++中CallContactService函数的典型用法代码示例。如果您正苦于以下问题:C++ CallContactService函数的具体用法?C++ CallContactService怎么用?C++ CallContactService使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CallContactService函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: error
void CDropbox::CommandShare(void *arg)
{
CommandParam *param = (CommandParam*)arg;
char *path = (char*)param->data;
if (path == NULL) {
CMStringA error(FORMAT, T2Utf(TranslateT("\"%s\" command has invalid parameter.\nUse \"/help\" for more info.")), "/share");
ProtoBroadcastAck(MODULE, param->hContact, ACKTYPE_MESSAGE, ACKRESULT_SUCCESS, param->hProcess, 0);
CallContactService(param->instance->GetDefaultContact(), PSR_MESSAGE, 0, (LPARAM)error.GetBuffer());
return;
}
ptrA token(db_get_sa(NULL, MODULE, "TokenSecret"));
ptrA encodedPath(mir_utf8encode(path));
bool useShortUrl = db_get_b(NULL, MODULE, "UseSortLinks", 1) > 0;
ShareRequest request(token, encodedPath, useShortUrl);
NLHR_PTR response(request.Send(param->instance->hNetlibConnection));
if (response == NULL || response->resultCode != HTTP_STATUS_OK) {
ProtoBroadcastAck(MODULE, param->hContact, ACKTYPE_MESSAGE, ACKRESULT_FAILED, param->hProcess, 0);
return;
}
JSONNode root = JSONNode::parse(response->pData);
if (root.empty()) {
ProtoBroadcastAck(MODULE, param->hContact, ACKTYPE_MESSAGE, ACKRESULT_FAILED, param->hProcess, 0);
return;
}
CMStringA link = root.at("url").as_string().c_str();
ProtoBroadcastAck(MODULE, param->hContact, ACKTYPE_MESSAGE, ACKRESULT_SUCCESS, param->hProcess, 0);
CallContactService(param->instance->GetDefaultContact(), PSR_MESSAGE, 0, (LPARAM)link.GetBuffer());
}
开发者ID:kxepal,项目名称:miranda-ng,代码行数:34,代码来源:dropbox_commands.cpp
示例2: OnOk
void OnOk(CCtrlButton*)
{
MCONTACT hContact = INVALID_CONTACT_ID;
switch (m_acs.handleType) {
case HANDLE_EVENT:
{
DBEVENTINFO dbei = { sizeof(dbei) };
db_event_get(m_acs.hDbEvent, &dbei);
hContact = (MCONTACT)CallProtoServiceInt(NULL, dbei.szModule, PS_ADDTOLISTBYEVENT, 0, (LPARAM)m_acs.hDbEvent);
}
break;
case HANDLE_SEARCHRESULT:
hContact = (MCONTACT)CallProtoServiceInt(NULL, m_acs.szProto, PS_ADDTOLIST, 0, (LPARAM)m_acs.psr);
break;
case HANDLE_CONTACT:
hContact = m_acs.hContact;
break;
}
if (hContact == NULL)
return;
ptrT szHandle(m_myHandle.GetText());
if (mir_tstrlen(szHandle))
db_set_ts(hContact, "CList", "MyHandle", szHandle);
int item = m_group.GetCurSel();
if (item > 0)
CallService(MS_CLIST_CONTACTCHANGEGROUP, hContact, m_group.GetItemData(item));
db_unset(hContact, "CList", "NotOnList");
if (m_chkAdded.GetState())
CallContactService(hContact, PSS_ADDED, 0, 0);
if (m_chkAuth.GetState()) {
DWORD flags = CallProtoServiceInt(NULL, m_acs.szProto, PS_GETCAPS, PFLAGNUM_4, 0);
if (flags & PF4_NOCUSTOMAUTH)
CallContactService(hContact, PSS_AUTHREQUEST, 0, 0);
else
CallContactService(hContact, PSS_AUTHREQUEST, 0, ptrT(m_authReq.GetText()));
}
if (m_chkOpen.GetState())
CallService(MS_CLIST_CONTACTDOUBLECLICKED, hContact, 0);
}
开发者ID:ybznek,项目名称:miranda-ng,代码行数:48,代码来源:addcontact.cpp
示例3: mir_utf8encodeT
void CDropbox::SendToContact(MCONTACT hContact, const TCHAR *data)
{
if (hContact == GetDefaultContact()) {
char *message = mir_utf8encodeT(data);
AddEventToDb(hContact, EVENTTYPE_MESSAGE, DBEF_UTF, (DWORD)mir_strlen(message), (PBYTE)message);
return;
}
const char *szProto = GetContactProto(hContact);
if (db_get_b(hContact, szProto, "ChatRoom", 0) == TRUE) {
ptrT tszChatRoom(db_get_tsa(hContact, szProto, "ChatRoomID"));
GCDEST gcd = { szProto, tszChatRoom, GC_EVENT_SENDMESSAGE };
GCEVENT gce = { sizeof(gce), &gcd };
gce.bIsMe = TRUE;
gce.dwFlags = GCEF_ADDTOLOG;
gce.ptszText = mir_tstrdup(data);
gce.time = time(NULL);
CallServiceSync(MS_GC_EVENT, WINDOW_VISIBLE, (LPARAM)&gce);
mir_free((void*)gce.ptszText);
return;
}
char *message = mir_utf8encodeT(data);
if (CallContactService(hContact, PSS_MESSAGE, 0, (LPARAM)message) != ACKRESULT_FAILED)
AddEventToDb(hContact, EVENTTYPE_MESSAGE, DBEF_UTF | DBEF_SENT, (DWORD)mir_strlen(message), (PBYTE)message);
}
开发者ID:wyrover,项目名称:miranda-ng,代码行数:26,代码来源:dropbox_utils.cpp
示例4: amThreadProc
/*
* Tread sub to ask protocol to retrieve away message
*/
static void amThreadProc(void *)
{
Netlib_Logf(NULL, "amThreadProc thread start");
ClcCacheEntry dnce;
memset(&dnce, 0, sizeof(dnce));
while (!MirandaExiting()) {
MCONTACT hContact = amGetCurrentChain();
while (hContact) {
DWORD time = GetTickCount();
if ((time - amRequestTick) < AMASKPERIOD) {
SleepEx(AMASKPERIOD - (time - amRequestTick) + 10, TRUE);
if (MirandaExiting())
goto LBL_Exit;
}
CListSettings_FreeCacheItemData(&dnce);
dnce.hContact = hContact;
Sync(CLUI_SyncGetPDNCE, (WPARAM)0, (LPARAM)&dnce);
HANDLE ACK = 0;
if (dnce.ApparentMode != ID_STATUS_OFFLINE) //don't ask if contact is always invisible (should be done with protocol)
ACK = (HANDLE)CallContactService(hContact, PSS_GETAWAYMSG, 0, 0);
if (!ACK) {
ACKDATA ack;
ack.hContact = hContact;
ack.type = ACKTYPE_AWAYMSG;
ack.result = ACKRESULT_FAILED;
if (dnce.m_cache_cszProto)
ack.szModule = dnce.m_cache_cszProto;
else
ack.szModule = NULL;
ClcDoProtoAck(hContact, &ack);
}
CListSettings_FreeCacheItemData(&dnce);
amRequestTick = time;
hContact = amGetCurrentChain();
if (hContact) {
DWORD i = 0;
do {
i++;
SleepEx(50, TRUE);
} while (i < AMASKPERIOD / 50 && !MirandaExiting());
}
else break;
if (MirandaExiting())
goto LBL_Exit;
}
WaitForSingleObjectEx(hamProcessEvent, INFINITE, TRUE);
ResetEvent(hamProcessEvent);
if (MirandaExiting())
break;
}
LBL_Exit:
g_hAwayMsgThread = NULL;
Netlib_Logf(NULL, "amThreadProc thread end");
}
开发者ID:kxepal,项目名称:miranda-ng,代码行数:61,代码来源:modern_awaymsg.cpp
示例5: debugLogA
INT_PTR __cdecl CVkProto::SvcAddAsFriend(WPARAM hContact, LPARAM)
{
debugLogA("CVkProto::SvcAddAsFriend");
LONG userID = getDword(hContact, "ID", -1);
if (!IsOnline() || userID == -1 || userID == VK_FEED_USER)
return 1;
CallContactService(hContact, PSS_AUTHREQUEST, 0, (LPARAM)TranslateT("Please authorize me to add you to my friend list."));
return 0;
}
开发者ID:gloria8023,项目名称:miranda-ng,代码行数:9,代码来源:vk_thread.cpp
示例6: Service_DisableIM
INT_PTR __cdecl Service_DisableIM(WPARAM wParam,LPARAM lParam) {
// WPARAM flags = 0;
// HANDLE hMetaContact = getMetaContact((HANDLE)wParam);
// if( hMetaContact ) {
// wParam = (WPARAM)hMetaContact;
// flags = PREF_METANODB;
// }
CallContactService((HANDLE)wParam,PSS_MESSAGE,(WPARAM)PREF_METANODB,(LPARAM)SIG_DEIN);
return 1;
}
开发者ID:aventado,项目名称:secureimplugin,代码行数:10,代码来源:svcs_menu.cpp
示例7: ProtoBroadcastAck
INT_PTR CDropbox::ProtoSendMessage(WPARAM, LPARAM lParam)
{
CCSDATA *pccsd = (CCSDATA*)lParam;
if (!HasAccessToken())
{
ProtoBroadcastAck(MODULE, pccsd->hContact, ACKTYPE_MESSAGE, ACKRESULT_FAILED, NULL, (LPARAM)"You cannot send messages when you are not authorized.");
return 0;
}
char *szMessage = (char*)pccsd->lParam;
if (*szMessage == '/')
{
// parse commands
char *sep = strchr(szMessage, ' ');
if (sep != NULL) *sep = 0;
struct
{
const char *szCommand;
pThreadFunc pHandler;
}
static commands[] =
{
{ "help", &CDropbox::CommandHelp },
{ "content", &CDropbox::CommandContent },
{ "share", &CDropbox::CommandShare },
{ "delete", &CDropbox::CommandDelete }
};
for (int i = 0; i < _countof(commands); i++)
{
if (!mir_strcmp(szMessage+1, commands[i].szCommand))
{
ULONG messageId = InterlockedIncrement(&hMessageProcess);
CommandParam *param = new CommandParam();
param->instance = this;
param->hContact = pccsd->hContact;
param->hProcess = (HANDLE)messageId;
param->data = (sep ? sep + 1 : NULL);
mir_forkthread(commands[i].pHandler, param);
return messageId;
}
}
}
char help[1024];
mir_snprintf(help, Translate("\"%s\" is not valid.\nUse \"/help\" for more info."), szMessage);
CallContactService(GetDefaultContact(), PSR_MESSAGE, 0, (LPARAM)help);
return 0;
}
开发者ID:Seldom,项目名称:miranda-ng,代码行数:54,代码来源:dropbox_services.cpp
示例8: AutoreplyDelayThread
void __cdecl AutoreplyDelayThread(void *_ad)
{ // _ad must be allocated using "new CAutoreplyData()"
CAutoreplyData *ad = (CAutoreplyData*)_ad;
_ASSERT(ad && ad->hContact && ad->Reply.GetLen());
char *szProto = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)ad->hContact, 0);
if (!szProto)
{
_ASSERT(0);
return;
}
int ReplyLen = (ad->Reply.GetLen() + 1) * (sizeof(char) + sizeof(WCHAR));
PBYTE pBuf = (PBYTE)malloc(ReplyLen);
memcpy(pBuf, TCHAR2ANSI(ad->Reply), ad->Reply.GetLen() + 1);
memcpy(pBuf + ad->Reply.GetLen() + 1, ad->Reply, (ad->Reply.GetLen() + 1) * sizeof(WCHAR));
CallContactService(ad->hContact, ServiceExists(CString(szProto) + PSS_MESSAGE "W") ? (PSS_MESSAGE "W") : PSS_MESSAGE, PREF_UNICODE, (LPARAM)pBuf);
if (g_AutoreplyOptPage.GetDBValueCopy(IDC_REPLYDLG_LOGREPLY))
{ // store in the history
DBEVENTINFO dbeo = {0};
dbeo.cbSize = sizeof(dbeo);
dbeo.eventType = EVENTTYPE_MESSAGE;
dbeo.flags = DBEF_SENT;
dbeo.szModule = szProto;
dbeo.timestamp = time(NULL);
dbeo.cbBlob = ReplyLen;
dbeo.pBlob = pBuf;
SleepEx(1000, true); // delay before sending the reply, as we need it to be later than the message we're replying to (without this delay, srmm puts the messages in a wrong order)
CallService(MS_DB_EVENT_ADD, (WPARAM)ad->hContact, (LPARAM)&dbeo);
}
free(pBuf);
/*
char *utf8Reply = mir_utf8encodeT(ad->Reply); // todo: use this instead of the code above, when 0.7 will be released
if (g_AutoreplyOptPage.GetDBValueCopy(IDC_REPLYDLG_LOGREPLY))
{ // store in the history
DBEVENTINFO dbeo = {0};
dbeo.cbSize = sizeof(dbeo);
dbeo.eventType = EVENTTYPE_MESSAGE;
dbeo.flags = DBEF_SENT | DBEF_UTF;
dbeo.szModule = szProto;
dbeo.timestamp = time(NULL);
dbeo.cbBlob = strlen(utf8Reply);
dbeo.pBlob = utf8Reply;
CallService(MS_DB_EVENT_ADD, (WPARAM)ad->hContact, (LPARAM)&dbeo);
}
CallContactService(ad->hContact, ServiceExists(CString(szProto) + PSS_MESSAGE "W") ? (PSS_MESSAGE "W") : PSS_MESSAGE, PREF_UTF, (LPARAM)utf8Reply);
mir_free(utf8Reply);
*/
delete ad;
}
开发者ID:MrtsComputers,项目名称:miranda-ng,代码行数:54,代码来源:MsgEventAdded.cpp
示例9: Service_CreateIM
INT_PTR __cdecl Service_CreateIM(WPARAM wParam,LPARAM lParam) {
if (!CallService(MS_PROTO_ISPROTOONCONTACT, (WPARAM)wParam, (LPARAM)szModuleName))
CallService(MS_PROTO_ADDTOCONTACT, (WPARAM)wParam, (LPARAM)szModuleName);
// WPARAM flags = 0;
// HANDLE hMetaContact = getMetaContact((HANDLE)wParam);
// if( hMetaContact ) {
// wParam = (WPARAM)hMetaContact;
// flags = PREF_METANODB;
// }
CallContactService((HANDLE)wParam,PSS_MESSAGE,(WPARAM)PREF_METANODB,(LPARAM)SIG_INIT);
return 1;
}
开发者ID:aventado,项目名称:secureimplugin,代码行数:12,代码来源:svcs_menu.cpp
示例10: AskStatusMessageThread
int AskStatusMessageThread(HWND hwnd)
{
DWORD time;
HANDLE h;
HANDLE ACK=0;
pdisplayNameCacheEntry pdnce=NULL;
h=GetCurrChain();
if (!h) return 0;
ISTREADSTARTED=1;
while (h)
{
time=GetTickCount();
if ((time-RequestTick)<ASKPERIOD)
{
SleepEx(ASKPERIOD-(time-RequestTick)+10,TRUE);
if (Miranda_Terminated())
{
ISTREADSTARTED=0;
return 0;
}
}
{
pdnce = GetDisplayNameCacheEntry((HANDLE)h);
if (pdnce->ApparentMode!=ID_STATUS_OFFLINE) //don't ask if contact is always invisible (should be done with protocol)
ACK=(HANDLE)CallContactService(h,PSS_GETAWAYMSG,0,0);
}
if (!ACK)
{
ACKDATA ack;
ack.hContact=h;
ack.type=ACKTYPE_AWAYMSG;
ack.result=ACKRESULT_FAILED;
if (pdnce)
ack.szModule=pdnce->szProto;
else
ack.szModule=NULL;
ClcProtoAck((WPARAM)h,(LPARAM) &ack);
}
RequestTick=time;
h=GetCurrChain();
if (h) SleepEx(ASKPERIOD,TRUE); else break;
if (Miranda_Terminated())
{
ISTREADSTARTED=0;
return 0;
}
}
ISTREADSTARTED=0;
return 1;
}
开发者ID:BackupTheBerlios,项目名称:modernb-svn,代码行数:53,代码来源:cache_funcs.c
示例11: splitMessageSend
// отправляет сообщение, если надо то разбивает на части
int splitMessageSend(pUinKey ptr, LPSTR szMsg)
{
int len = (int)strlen(szMsg);
int par = (getContactStatus(ptr->hContact) == ID_STATUS_OFFLINE) ? ptr->proto->split_off : ptr->proto->split_on;
if (par && len > par) {
int ret;
LPSTR msg = splitMsg(szMsg, par);
LPSTR buf = msg;
while (*buf) {
len = (int)strlen(buf);
LPSTR tmp = mir_strdup(buf);
ret = CallContactService(ptr->hContact, PSS_MESSAGE, (WPARAM)PREF_METANODB, (LPARAM)tmp);
mir_free(tmp);
buf += len + 1;
}
SAFE_FREE(msg);
return ret;
}
return (int)CallContactService(ptr->hContact, PSS_MESSAGE, (WPARAM)PREF_METANODB, (LPARAM)szMsg);
}
开发者ID:martok,项目名称:miranda-ng,代码行数:22,代码来源:splitmsg.cpp
示例12: MIRANDA_HOOK_EVENT
MIRANDA_HOOK_EVENT(ME_DB_EVENT_ADDED, hContact, hDbEvent)
{
DBEVENTINFO dbei = { sizeof(dbei) };
dbei.cbBlob = db_event_getBlobSize(hDbEvent);
if (dbei.cbBlob == -1)
return 0;
dbei.pBlob = (BYTE*)alloca(dbei.cbBlob);
db_event_get(hDbEvent, &dbei);
// if event is in protocol that is not despammed
if (!ProtoInList(dbei.szModule))
return 0;
// event is an auth request
if (gbHandleAuthReq) {
if (!(dbei.flags & DBEF_SENT) && !(dbei.flags & DBEF_READ) && dbei.eventType == EVENTTYPE_AUTHREQUEST) {
MCONTACT hcntct = DbGetAuthEventContact(&dbei);
// if request is from unknown or not marked Answered contact
int a = db_get_b(hcntct, "CList", "NotOnList", 0);
int b = !db_get_b(hcntct, pluginName, "Answered", 0);
if (a && b) {
// ...send message
if (gbHideContacts)
db_set_b(hcntct, "CList", "Hidden", 1);
if (gbSpecialGroup)
db_set_ws(hcntct, "CList", "Group", gbSpammersGroup.c_str());
BYTE msg = 1;
if (gbIgnoreURL) {
TCHAR* EventText = ReqGetText(&dbei); //else return NULL
msg = !IsUrlContains(EventText);
mir_free(EventText);
}
if (gbInvisDisable) {
if (CallProtoService(dbei.szModule, PS_GETSTATUS, 0, 0) == ID_STATUS_INVISIBLE)
msg = 0;
else if (db_get_w(hContact, dbei.szModule, "ApparentMode", 0) == ID_STATUS_OFFLINE)
msg = 0; //is it useful ?
}
if (msg) {
ptrA buff(mir_utf8encodeW(variables_parse(gbAuthRepl, hcntct).c_str()));
CallContactService(hcntct, PSS_MESSAGE, 0, (LPARAM)buff);
}
return 1;
}
}
}
return 0;
}
开发者ID:truefriend-cz,项目名称:miranda-ng,代码行数:52,代码来源:stopspam.cpp
示例13: DeinitMetaContact
// remove all secureim connections on subcontacts
void DeinitMetaContact(HANDLE hContact) {
HANDLE hMetaContact = isProtoMetaContacts(hContact) ? hContact : getMetaContact(hContact);
if( hMetaContact ) {
for(int i=0;i<CallService(MS_MC_GETNUMCONTACTS,(WPARAM)hMetaContact,0);i++) {
HANDLE hSubContact = (HANDLE)CallService(MS_MC_GETSUBCONTACT,(WPARAM)hMetaContact,(LPARAM)i);
if( hSubContact && isContactSecured(hSubContact)&SECURED ) {
CallContactService(hSubContact,PSS_MESSAGE,(WPARAM)PREF_METANODB,(LPARAM)SIG_DEIN);
}
}
}
}
开发者ID:aventado,项目名称:secureimplugin,代码行数:14,代码来源:crypt_metacontacts.cpp
示例14: Exit
void CSend::svcSendFileExit()
{
//szMessage should be encoded as the File followed by the description, the
//separator being a single nul (\0). If there is no description, do not forget
//to end the File with two nuls.
if (m_bSilent) {
Exit(ACKRESULT_SUCCESS); return;
}
if (!m_hContact) {
Error(LPGENT("%s requires a valid contact!"), m_pszSendTyp);
Exit(ACKRESULT_FAILED); return;
}
mir_freeAndNil(m_szEventMsg);
char* szFile = mir_t2a(m_pszFile);
m_cbEventMsg = (DWORD)mir_strlen(szFile) + 2;
m_szEventMsg = (char*)mir_realloc(m_szEventMsg, (sizeof(char) * m_cbEventMsg));
memset(m_szEventMsg, 0, (sizeof(char) * m_cbEventMsg));
mir_strcpy(m_szEventMsg, szFile);
if (m_pszFileDesc && m_pszFileDesc[0] != NULL) {
char* temp = mir_t2a(m_pszFileDesc);
m_cbEventMsg += (DWORD)mir_strlen(temp);
m_szEventMsg = (char*)mir_realloc(m_szEventMsg, sizeof(char)*m_cbEventMsg);
mir_strcpy(m_szEventMsg + mir_strlen(szFile) + 1, temp);
m_szEventMsg[m_cbEventMsg - 1] = 0;
mir_free(temp);
}
mir_free(szFile);
//create a HookEventObj on ME_PROTO_ACK
if (!m_hOnSend) {
m_hOnSend = HookEventObj(ME_PROTO_ACK, OnSend, this);
}
// Start miranda PSS_FILE based on mir ver (T)
TCHAR* ppFile[2] = { 0, 0 };
TCHAR* pDesc = mir_tstrdup(m_pszFileDesc);
ppFile[0] = mir_tstrdup(m_pszFile);
ppFile[1] = NULL;
m_hSend = (HANDLE)CallContactService(m_hContact, PSS_FILE, (WPARAM)pDesc, (LPARAM)ppFile);
mir_free(pDesc);
mir_free(ppFile[0]);
// check we actually got an ft handle back from the protocol
if (!m_hSend) {
Unhook();
Error(SS_ERR_INIT, m_pszSendTyp);
Exit(ACKRESULT_FAILED); return;
}
}
开发者ID:Seldom,项目名称:miranda-ng,代码行数:49,代码来源:CSend.cpp
示例15: RefreshUserDetailsWorkerThread
void __cdecl RefreshUserDetailsWorkerThread(void *param)
{
ShowPopupMessage(TranslateT("WhenWasIt"), TranslateT("Starting to refresh user details"), hRefreshUserDetails);
int delay = db_get_w(NULL, ModuleName, "UpdateDelay", REFRESH_DETAILS_DELAY);
int res;
MCONTACT hContact = db_find_first();
while (hContact != NULL) {
res = CallContactService(hContact, PSS_GETINFO, 0, 0);
hContact = db_find_next(hContact);
if (hContact)
Sleep(delay); //sleep for a few seconds between requests
}
ShowPopupMessage(TranslateT("WhenWasIt"), TranslateT("Done refreshing user details"), hRefreshUserDetails);
}
开发者ID:kmdtukl,项目名称:miranda-ng,代码行数:15,代码来源:services.cpp
示例16: T2Utf
void CDropbox::CommandHelp(void *arg)
{
CommandParam *param = (CommandParam*)arg;
CMStringA help = (char*)T2Utf(TranslateT("Dropbox supports the following commands:"));
help += "\n";
help += "\"/content [dir]\" \t- "; help += T2Utf(TranslateT("shows all files in folder \"dir\" (\"dir\" can be omitted for root folder)"));
help += "\n";
help += "\"/share <path>\" \t- "; help += T2Utf(TranslateT("returns download link for file or folder with specified path (\"path\" is relative from root folder)"));
help += "\n";
help += "\"/delete <path>\" \t- "; help += T2Utf(TranslateT("deletes file or folder with specified path (\"path\" is relative from root folder)"));
ProtoBroadcastAck(MODULE, param->hContact, ACKTYPE_MESSAGE, ACKRESULT_SUCCESS, param->hProcess, 0);
CallContactService(param->instance->GetDefaultContact(), PSR_MESSAGE, 0, (LPARAM)help.GetBuffer());
}
开发者ID:kxepal,项目名称:miranda-ng,代码行数:15,代码来源:dropbox_commands.cpp
示例17: QueryAwayMessage
void QueryAwayMessage(HWND hWnd, PLUGINDATA *pdp)
{
HANDLE hContact = PUGetContact(hWnd);
char *szProto = (char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0);
if (szProto)
{
if ((CallProtoService(szProto, PS_GETCAPS,PFLAGNUM_1, 0) & PF1_MODEMSGRECV) &&
(CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_3, 0) & Proto_Status2Flag(pdp->newStatus)))
{
//The following HookEventMessage will hook the ME_PROTO_ACK event and send a WM_AWAYMSG to hWnd when the hooks get notified.
pdp->hAwayMsgHook = HookEventMessage(ME_PROTO_ACK, hWnd, WM_AWAYMSG);
//The following instruction asks Miranda to retrieve the away message and associates a hProcess (handle) to this request. This handle will appear in the ME_PROTO_ACK event.
pdp->hAwayMsgProcess = (HANDLE)CallContactService(hContact, PSS_GETAWAYMSG, 0, 0);
}
}
}
开发者ID:TonyAlloa,项目名称:miranda-dev,代码行数:16,代码来源:popup.cpp
示例18: SendChunkW
static int SendChunkW(WCHAR *chunk, HANDLE hContact, char *szSvc, DWORD dwFlags)
{
BYTE *pBuf = NULL;
int wLen = lstrlenW(chunk), id;
DWORD memRequired = (wLen + 1) * sizeof(WCHAR);
DWORD codePage = DBGetContactSettingDword(hContact, SRMSGMOD_T, "ANSIcodepage", CP_ACP);
int mbcsSize = WideCharToMultiByte(codePage, 0, chunk, -1, (char *)pBuf, 0, 0, 0);
memRequired += mbcsSize;
pBuf = (BYTE *)mir_alloc(memRequired);
WideCharToMultiByte(codePage, 0, chunk, -1, (char *)pBuf, mbcsSize, 0, 0);
CopyMemory(&pBuf[mbcsSize], chunk, (wLen + 1) * sizeof(WCHAR));
id = CallContactService(hContact, szSvc, dwFlags, (LPARAM)pBuf);
mir_free(pBuf);
return id;
}
开发者ID:TonyAlloa,项目名称:miranda-dev,代码行数:16,代码来源:sendqueue.cpp
示例19: token
void CDropbox::CommandContent(void *arg)
{
CommandParam *param = (CommandParam*)arg;
char *path = (char*)param->data;
if (path == NULL)
path = "";
ptrA token(db_get_sa(NULL, MODULE, "TokenSecret"));
ptrA encodedPath(mir_utf8encode(path));
GetMetadataRequest request(token, encodedPath);
NLHR_PTR response(request.Send(param->instance->hNetlibConnection));
if (response == NULL || response->resultCode != HTTP_STATUS_OK) {
ProtoBroadcastAck(MODULE, param->hContact, ACKTYPE_MESSAGE, ACKRESULT_FAILED, param->hProcess, 0);
return;
}
JSONNode root = JSONNode::parse(response->pData);
if (root.empty()) {
ProtoBroadcastAck(MODULE, param->hContact, ACKTYPE_MESSAGE, ACKRESULT_FAILED, param->hProcess, 0);
return;
}
CMStringA message;
bool isDir = root.at("is_dir").as_bool();
if (!isDir)
message.AppendFormat("\"%s\" %s", encodedPath, T2Utf(TranslateT("is file")));
else {
JSONNode content = root.at("contents").as_array();
for (size_t i = 0; i < content.size(); i++) {
JSONNode item = content[i];
if (item.empty()) {
if (i == 0)
message.AppendFormat("\"%s\" %s", encodedPath, T2Utf(TranslateT("is empty")));
break;
}
CMStringA subName(item.at("path").as_string().c_str());
message.AppendFormat("%s\n", (subName[0] == '/') ? subName.Mid(1) : subName);
}
}
ProtoBroadcastAck(MODULE, param->hContact, ACKTYPE_MESSAGE, ACKRESULT_SUCCESS, param->hProcess, 0);
CallContactService(param->instance->GetDefaultContact(), PSR_MESSAGE, 0, (LPARAM)message.GetBuffer());
}
开发者ID:kxepal,项目名称:miranda-ng,代码行数:46,代码来源:dropbox_commands.cpp
示例20: MIRANDA_HOOK_EVENT
MIRANDA_HOOK_EVENT(ME_DB_EVENT_ADDED, wParam, lParam)
{
UNREFERENCED_PARAMETER(wParam);
MEVENT hDbEvent = (MEVENT)lParam;
DBEVENTINFO dbei = { 0 };
dbei.cbSize = sizeof(dbei);
dbei.cbBlob = db_event_getBlobSize(hDbEvent);
if (-1 == dbei.cbBlob)
return 0;
mir_ptr<BYTE> blob((LPBYTE)mir_alloc(dbei.cbBlob));
dbei.pBlob = blob;
db_event_get(hDbEvent, &dbei);
// if event is in protocol that is not despammed
if (plSets->ProtoDisabled(dbei.szModule))
return 0;
// event is an auth request
if (!(dbei.flags & DBEF_SENT) && !(dbei.flags & DBEF_READ) && dbei.eventType == EVENTTYPE_AUTHREQUEST) {
MCONTACT hcntct = DbGetAuthEventContact(&dbei);
// if request is from unknown or not marked Answered contact
//and if I don't sent message to this contact
if (db_get_b(hcntct, "CList", "NotOnList", 0) && !db_get_b(hcntct, pluginName, answeredSetting, 0) && !IsExistMyMessage(hcntct)) {
if (!plSets->HandleAuthReq.Get()) {
char *buf = mir_utf8encodeW(variables_parse(plSets->AuthRepl.Get(), hcntct).c_str());
CallContactService(hcntct, PSS_MESSAGE, 0, (LPARAM)buf);
mir_free(buf);
}
// ...send message
char *AuthRepl = mir_u2a(variables_parse(plSets->AuthRepl.Get(), hcntct).c_str());
CallProtoService(dbei.szModule, PS_AUTHDENY, hDbEvent, (LPARAM)AuthRepl);
mir_free(AuthRepl);
db_set_b(hcntct, "CList", "NotOnList", 1);
db_set_b(hcntct, "CList", "Hidden", 1);
if (!plSets->HistLog.Get())
db_event_delete(0, hDbEvent);
return 1;
}
}
return 0;
}
开发者ID:ybznek,项目名称:miranda-ng,代码行数:46,代码来源:events.cpp
注:本文中的CallContactService函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论