Running Object Table.cpp
上传用户:bjlvip
上传日期:2010-02-08
资源大小:744k
文件大小:1k
源码类别:

Windows编程

开发平台:

Visual C++

  1. #define _WIN32_DCOM
  2. #include <windows.h>
  3. #include <iostream.h>
  4. #include <stdio.h>
  5. void main()
  6. {
  7. CoInitialize(NULL);
  8. IRunningObjectTable* pRunningObjectTable;
  9. GetRunningObjectTable(NULL, &pRunningObjectTable);
  10. IEnumMoniker* pEnumMoniker;
  11. pRunningObjectTable->EnumRunning(&pEnumMoniker);
  12. IMoniker* pMoniker;
  13. IBindCtx* pBindCtx;
  14. OLECHAR* moniker_name;
  15. while(pEnumMoniker->Next(1, &pMoniker, NULL) == S_OK)
  16. {
  17. CreateBindCtx(0, &pBindCtx);
  18. pMoniker->GetDisplayName(pBindCtx, NULL, &moniker_name);
  19. wprintf(L"DisplayName is %sn", moniker_name);
  20. CoTaskMemFree(moniker_name);
  21.      DWORD mkSys;
  22. pMoniker->IsSystemMoniker(&mkSys);
  23. switch(mkSys)
  24. {
  25. case MKSYS_NONE:
  26. cout << "Custom moniker" << endl;
  27. break;
  28. case MKSYS_GENERICCOMPOSITE:
  29. cout << "Composite moniker" << endl;
  30. break;
  31. case MKSYS_FILEMONIKER:
  32. cout << "File moniker" << endl;
  33. break;
  34. case MKSYS_ANTIMONIKER:
  35. cout << "Anti moniker" << endl;
  36. break;
  37. case MKSYS_ITEMMONIKER:
  38. cout << "Item moniker" << endl;
  39. break;
  40. case MKSYS_POINTERMONIKER:
  41. cout << "Pointer moniker" << endl;
  42. break;
  43. case MKSYS_CLASSMONIKER:
  44. cout << "Class moniker" << endl;
  45. break;
  46. default:
  47. cout << "Unknown system moniker" << endl;
  48. }
  49. pMoniker->Release();
  50. pBindCtx->Release();
  51. }
  52. pRunningObjectTable->Release();
  53. pEnumMoniker->Release();
  54. CoUninitialize();
  55. }