IsSearchSynchronous在Outlook中失败
问题描述:
我正在使用Outlook自动查找日历中的项目。为此,我使用IsSearchSynchronous()方法来查看是否必须等待AdvancedSearchComplete事件。顺便说一句,它是否有同步?IsSearchSynchronous在Outlook中失败
无论如何,如果我有Outlook运行,我没有这个电话的问题。但是,如果它不运行 - 呼叫失败
HRESULT: 0x80020009 Exception occurred
的EXCEPINFO包含:
Source: "Microsoft Outlook"
Description: "The operation failed."
scode: 0x80004005
有什么建议? 这里是我的测试案例:
#include <atlstr.h>
int _tmain()
{
IDispatch* pApp;
HRESULT hr;
CoInitialize(NULL);
CLSID clsid;
hr = CLSIDFromProgID(L"Outlook.Application", &clsid);
if(SUCCEEDED(hr))
{
hr = CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER, IID_IDispatch, (void **)&pApp);
if(SUCCEEDED(hr))
{
// Get DISPID for "IsSearchSynchronous"
OLECHAR Name[] = {L"IsSearchSynchronous"};
LPOLESTR lp = Name;
DISPID dispID;
hr = pApp->GetIDsOfNames(IID_NULL, &lp, 1, LOCALE_USER_DEFAULT, &dispID);
if(SUCCEEDED(hr))
{
// The path name of the folders that the search will search through.
VARIANT path;
path.vt = VT_BSTR;
path.bstrVal = SysAllocString(L"'Calendar'");
// Build DISPPARAMS
DISPPARAMS dp = { NULL, NULL, 0, 0 };
dp.cArgs = 1;
dp.rgvarg = &path;
// get IsSearchSynchronous
VARIANT result;
VariantInit(&result);
EXCEPINFO ei = {0};
hr = pApp->Invoke(dispID, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_PROPERTYGET, &dp, &result, &ei, NULL);
VARIANT_BOOL vbIsSearchSynchronous = result.boolVal;
}
}
}
CoUninitialize();
return 0;
}
答
如果任何人有兴趣,这是与微软帮助解决。 对于IsSearchSynchronous()调用的“范围”参数应该是日历文件夹的完整路径,例如:
"\\Mailbox - <user_name>\\Calendar"