我已经把我的大脑搁置了几个小时: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);
}
}
答案 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循环中。
但请负责任地使用此功能,而不是用于生成垃圾邮件联系请求。感谢。