在Windows中识别正在运行的程序

时间:2012-03-27 16:03:14

标签: c++ windows process running-other-programs

我有以下场景,我需要在执行程序之前检测一个在Windows中运行的特定程序,例如我的程序需要知道LogMeIn是否实际安装并运行才能继续,我已经使用了一些方法,如枚举使用psapi.dll的进程,但我认为进程名称可能会在安装和配置阶段发生变化,所以我不知道如何确保我可以独立于此找到进程。我正在使用基于以下代码段的一些测试:http://msdn.microsoft.com/en-us/library/windows/desktop/ms682623(v=vs.85).aspx

另一种方法是使用注册表代码,但我发现它也可以被修改而且不是标准的。

1 个答案:

答案 0 :(得分:0)

如果要跟踪的程序是窗口化的(因此显示了一个窗口),窗口标题就是您预测的内容。您可以使用EnumWindows功能。如果标题发生了变化,但在不同的运行中仍然有一些相同的单词,则可以使用正则表达式来查看名称是否与您想要的名称相匹配。 例如:

  

LogMeIn正在运行......

     

2012-03-27:LogMeIn

这两个字符串共享一个通用和显式名称,因此您可以告诉它将是您要查找的内容。 您可以将此推理应用于EnumProcess方法