c ++ - Identifikation af et kørende program i Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har følgende scenario, jeg skal opdage et bestemt program, der kører i Windows, før jeg kan udføre mit program, for eksempel skal mit program vide, om LogMeIn faktisk er installeret og kører for at fortsætte. Jeg har brugt nogle tilgange som opsummering af processer ved hjælp af psapi .dll, men jeg tror, ​​at procesnavnet kan ændre sig i installations- og konfigurationsfasen, så jeg ved ikke, hvordan jeg sikrer, at jeg altid kan finde processen uafhængigt af dette. Jeg bruger nogle tests baseret på følgende kodestykker: http://msdn.microsoft.com/en-us/library/windows/desktop/ms682623(v=vs.85).aspx[1]


Den anden tilgang er at bruge registrykoden, men jeg opdager, at den også kan ændres, og den er ikke standard.

Bedste reference


Hvis det program, du vil spore, er vinduet (så en Windows-udgave vises), og vinduetitel er noget, du forudsiger. Du kan bruge EnumWindows-funktionen. Hvis titlen ændres, men stadig har nogle ord, der er de samme over de forskellige runder, kan du bruge regulært udtryk for at se, om navnet matcher det ønskede.
Eksempel: [2]



  LogMeIn kører ...

  
  2012-03-27: LogMeIn



Disse to strenger deler et fælles og eksplicit navn, så du kan fortælle, at det vil være, hvad du leder efter.
Du kan anvende denne begrundelse til EnumProcess-metoden