Определение работающей программы в Windows
У меня есть следующий сценарий, мне нужно обнаружить конкретную программу, работающую в Windows, прежде чем я могу выполнить свою программу, например, моя программа должна знать, установлен ли LogMeIn на самом деле и работает ли я, чтобы продолжить, я использовал некоторые подходы, такие как перечисление процессов с использованием psapi.dll, но я думаю, что имя процесса может измениться на этапе установки и настройки, поэтому я не знаю, как сделать так, чтобы я всегда мог найти процесс независимо от этого. Я использую некоторые тесты, основанные на следующих фрагментах кода: http://msdn.microsoft.com/en-us/library/windows/desktop/ms682623(v=vs.85).aspx
Другой подход заключается в использовании кода реестра, но я обнаружил, что он также может быть изменен и не является стандартным.
1 ответ
Если программа, которую вы хотите отследить, является оконной (то есть окно показывается), и заголовок окна - это то, что вы предсказываете. Вы можете использовать функцию EnumWindows. Если заголовок изменяется, но все равно есть несколько слов, которые одинаковы в разных сериях, вы можете использовать регулярное выражение, чтобы увидеть, соответствует ли имя тому, что вы хотите. Пример:
LogMeIn работает...
2012-03-27: LogMeIn
Эти две строки имеют общее и явное имя, так что вы можете сказать, что это будет то, что вы ищете. Вы можете применить это обоснование к методу EnumProcess