-4

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

1 回答 1

-1

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

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

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

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

于 2014-10-02T11:16:47.850 回答