2014-10-02 114 views
-4

我已经绞尽脑汁在这几个小时:pClient总是NULL(0x000000)。 pClient似乎没有像ISkypePtr,IUserCollectionPtr和IUserPtr那样初始化?初始化ISkypeClientPtr

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

你没有作任何努力来初始化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循环中,假设您不打算在每次联系请求后关闭客户端。

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

+0

谢谢,为我工作。我会说我不知道​​我在API文档中错过了GetClient,但是当我发布时,我已经达到了36 + hrs ... – Oloty 2014-10-03 11:29:12