c++ - 如何在 C++ 中检查 Microsoft Outlook 是否打开?

标签 c++ visual-c++ outlook

我想根据 outlook 是否打开在我的应用程序中执行特定操作。

我试过这段代码,但它总是返回 false。

CLSID clsid;
HRESULT hr = CLSIDFromProgID(_T("Outlook.Application"), &clsid);
if (hr != S_OK) 
return false;

IUnknown *pUnknown = NULL;
hr = GetActiveObject(clsid, 0, &pUnknown);
return (hr == S_OK);

谁能告诉我如何在 C++ 中检查“Outlook”是否打开。

最佳答案

据我所知,C++ 标准在这种情况下无济于事,因为您的问题是特定于操作系统的。

如果您使用的是 Windows 操作系统,则可以使用“WinAPI”。

以下是一些步骤。以下步骤的代码可在以下 MSDN 链接中找到。您可以根据需要修改代码。

https://msdn.microsoft.com/en-us/library/windows/desktop/ms682623(v=vs.85).aspx

  1. 调用“EnumProcesses”。将返回进程 ID 列表。

  2. 使用“EnumProcesses”返回的进程 ID 遍历每个进程。

  3. 然后使用“OpenProcess”和“GetModuleBaseName”找到进程的名称,如上面的 MSDN 链接所示。
  4. 在上述步骤(第 3 步)返回的进程名称中搜索字符串“Outlook”。

这是我知道的粗略方法。

关于c++ - 如何在 C++ 中检查 Microsoft Outlook 是否打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42801547/

相关文章:

c++ - 如何检索回滚驱动程序节点强名称?

excel - 运行时错误 '1004' 对象 'Rows' 的方法 '_Global' 失败

css - 寻找一种在 table 后面放置一盒颜色的简单方法

c++ - std::vector insert 的行为与我预期的不同。这是一个错误吗?

c++ - C++ 模板的优缺点是什么?

c++ - 每当我尝试在 C++ 中使用 setfill 操纵器时,它只会显示空白

web-applications - 自定义错误模块无法识别此错误

c++ - 为什么 AVIStreamRead 什么都不读?

c++ - 棘手的 InterlockedDecrement 与 CriticalSection

c++ - MSVC 2015 SFINAE 未能找到合适的成员函数