初始化ISkypeClientPtr

时间:2014-10-02 11:09:02

标签: c++ skype skype4com

我已经把我的大脑搁置了几个小时:pClient总是为NULL(0x000000)。 pClient似乎没有像ISkypePtr,IUserCollectionPtr和IUserPtr那样初始化?

ISkypePtr pSkype(__uuidof(Skype));
while (TRUE){
    IUserCollectionPtr pResults = pSkype->SearchForUsers("john doe");
    for (int i = 1; i <= pResults->Count; ++i){
        IUserPtr pUser = pResults->GetItem(i); _bstr_t handle = pUser->GetHandle(); 
        IClientPtr pClient;
        pClient->OpenAddContactDialog(handle);
        Sleep(30000);
    }
}

1 个答案:

答案 0 :(得分:-1)

你没有做任何初始化pClient的工作:在另外两种情况下,你给它一个CLSID来实例化你从你收到的COM对象指针中分配它。我想你想要以下内容:

// Start client
IClientPtr pClient = pSkype->GetClient();
if (pClient->IsRunning == VARIANT_FALSE)
    pClient->Start(VARIANT_FALSE, VARIANT_FALSE);

(摘自this project on GoogleCode)。假设您不打算在每次联系请求后关闭客户端,则不需要在while循环中。

但请负责任地使用此功能,而不是用于生成垃圾邮件联系请求。感谢。