#define INITGUID #include #include "debug.h" #include "stringutils.h" #include #include "pimstore.h" bool testpoom(void) { IPOutlookApp * pOutApp = NULL; IUnknown * pUnknown = NULL; HRESULT hr; hr = CoInitializeEx( NULL, 0); if (hr != S_OK) { error("coinit->%08lx", hr); return false; } hr = CoCreateInstance(CLSID_Application, NULL, CLSCTX_INPROC_SERVER, IID_IUnknown, (void **)&pUnknown); if (hr != S_OK) { error("cocreate app : %08lx", hr); return false; } hr = pUnknown->QueryInterface(IID_IPOutlookApp, (void**)&pOutApp); if (hr != S_OK) { error("qi(outlookapp) -> %08lx", hr); return false; } //-------------------------------------------------------------------- hr = pOutApp->Logon(NULL); if (hr != S_OK) { error("app->logon: %08lx", hr); pOutApp->Release(); return false; } debug("logged on\n"); //-------------------------------------------------------------------- BSTR pwszVersion = NULL; pOutApp->get_Version(&pwszVersion); debug("version = %ls\n", pwszVersion); SysFreeString(pwszVersion); //-------------------------------------------------------------------- IItem *pItem=NULL; hr = pOutApp->GetItemFromOid(0x80000001, reinterpret_cast(&pItem)); if (hr != S_OK) { error("app->logon: %08lx", hr); pOutApp->Release(); return false; } debug("item=%08lx\n", pItem); //-------------------------------------------------------------------- long oid; hr = pItem->get_Oid(&oid); if (hr!=S_OK) { error("getoid->%08lx",hr); } else { debug("pItem oid=%08lx\n", oid); } //-------------------------------------------------------------------- int type; hr = pItem->get_DefaultItemType(&type); if (hr!=S_OK) { error("getitemtype->%08lx",hr); } else { debug("pItem type=%08lx\n", type); } //-------------------------------------------------------------------- IFolder *pFolder=NULL; hr = pItem->get_Parent(&pFolder); if (hr!=S_OK) { error("getparent->%08lx", hr); } else { debug("folder=%08lx\n", pFolder); int dtype; hr = pFolder->get_DefaultItemType(&dtype); if (hr!=S_OK) { error("folder-gettype -> %08lx\n", dtype); } else { debug("item parenttype = %d\n", dtype); } } //-------------------------------------------------------------------- CEPROPID props[3]; props[0] = PIMPR_FIRST_NAME; props[1] = PIMPR_LAST_NAME; props[2] = PIMPR_MOBILE_TELEPHONE_NUMBER; CEPROPVAL *pVals= NULL; DWORD valsize=0; hr=pItem->GetProps(props, CEDB_ALLOWREALLOC, 3, &pVals, &valsize, GetProcessHeap()); if (hr!=S_OK) { error("Getprops->%08lx", hr); } HeapFree(GetProcessHeap(), 0, pVals); pOutApp->Logoff(); pOutApp->Release(); return true; } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { DebugSetLogfile("tstpoom.log"); testpoom(); return 0; }