正在初始化ISkypeClientPtr



我已经为此绞尽脑汁好几个小时了: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);
    }
}

您没有花任何精力初始化pClient:在其他两种情况下,您给它一个CLSID来实例化,并从收到的COM对象指针中分配它。我想你想要以下内容:

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

(取自GoogleCode上的这个项目)。假设您不打算在每次联系请求后关闭客户端,则不需要在while循环中执行此操作。

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

最新更新