[Windows] detecteren of programma draait

Pagina: 1
Acties:

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Ik wil graag onder Windows in C/C++ detecteren of een bepaald programma draait. Hiervoor weet ik twee dingen:

a) Gebruik EnumWindows om alle actieve windows te detecteren en kijk of daar het window dat je zoekt tussen zit. Dit werkt echter niet voor applicaties die geen windows hebben, zoals bijvoorbeeld services.

b) Gebruik CreateToolhelp32Snapshot wat een lijst van alle lopende processen geeft, ook services. Dit werkt echter niet onder Windows NT (tot zover New Technology :P)

Weet iemand hoe ik en alle mogelijke programma's kan detecteren en het kan doen onder Windows NT?

  • Biedzjee
  • Registratie: December 2000
  • Laatst online: 14-08-2025

Trying to establish voice contact... please yell into keyboard.


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Als je FindWindow gebruikt hoef je er zelf niet door enumwindows te zoeken.

We adore chaos because we like to restore order - M.C. Escher


  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Die van codeguru is helaas niet te gebruiken, omdat ik juist naar een DOS-programma zoek. Die van microsoft ziet er goed uit. Zal het eens checken...

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Helaas gebruikt die ook de CreateToolhelp32Snapshot functies en consorten.
LordLarry schreef op 26 February 2003 @ 20:33:
Als je FindWindow gebruikt hoef je er zelf niet door enumwindows te zoeken.
En die methode is zo lek als een mandje, ik hoef hopelijk niet uit te leggen waarom :)

Die code van CodeGuru.com doet het op de goede manier voor NT4, nl. via EnumProcesses (zoek maar in MSDN bij PSAPI). Dat ie geen DOS-programma's toont is logisch, die hebben onder NT net zomin als 2K/XP een eigen 32-bit process (DOS is per definitie 16-bit). Ik vraag me af of je echt wel naar DOS-programma's zoekt eigenlijk, of dat je niet in de war bent met console processes.

ps. je zult overigens op runtime NT4 moeten detecteren. Op alle andere OS'en dan NT4 verdient het gebruik van de ToolHelp API de voorkeur.

[ Voor 9% gewijzigd door curry684 op 26-02-2003 22:14 . Reden: Addendum ]

Professionele website nodig?


  • KillR-B
  • Registratie: Mei 2002
  • Laatst online: 20-01 20:49
Laat me raden ... dit wil je weten voor je ECC2 client :+

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
curry684 schreef op 26 February 2003 @ 22:12:
Helaas gebruikt die ook de CreateToolhelp32Snapshot functies en consorten.
Gebruikt idd CreateToolhelp32Snapshot, maar voor NT duikt ie het register in.
Die code van CodeGuru.com doet het op de goede manier voor NT4, nl. via EnumProcesses (zoek maar in MSDN bij PSAPI). Dat ie geen DOS-programma's toont is logisch, die hebben onder NT net zomin als 2K/XP een eigen 32-bit process (DOS is per definitie 16-bit). Ik vraag me af of je echt wel naar DOS-programma's zoekt eigenlijk, of dat je niet in de war bent met console processes.

ps. je zult overigens op runtime NT4 moeten detecteren. Op alle andere OS'en dan NT4 verdient het gebruik van de ToolHelp API de voorkeur.
Runtime detecteren is niet erg. Ik zoek idd naar console processes. EnumProcesses ziet er uit als iets wat heel smerig is, maar wel werkt. Thanx.
KillR-B schreef op 27 February 2003 @ 00:32:
Laat me raden ... dit wil je weten voor je ECC2 client :+
:X O-)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

SWfreak schreef op 27 februari 2003 @ 09:14:
Gebruikt idd CreateToolhelp32Snapshot, maar voor NT duikt ie het register in.
Ach ik had er ook maar 30 seconden naar gekeken ;)
Runtime detecteren is niet erg. Ik zoek idd naar console processes. EnumProcesses ziet er uit als iets wat heel smerig is, maar wel werkt. Thanx.
Als er een standaard API-call voor is is het niet smerig, lekker gebruiken dus. Veel succes ermee ;)

Professionele website nodig?

Pagina: 1