auf prozess warten



  • hallo liebe c++er ^^
    ich bräuchte hilfe und zwar will ich dass mein konsolen-programm wartet bis ein bestimmter prozess aufgerufen wird (blabla.exe), wenn blabla.exe aufgerufen wurde soll das programm die nachricht "blabla.exe gefunden!" ausgeben, wie könnte ich das hin bekommen? vielen vielen vielen dank im voraus, ich hilfe mir hilft jemand, weil es wirklich sehr wichtig ist!!



  • Mit reinem C++ geht das nicht, dafür musst du auf plattformspezifische Funktionen zugreifen. Auf welchem OS soll das Programm denn laufen?
    edit: Unter Windows kannst du dir die laufenden Prozesse mit EnumProcesses oder so auflisten lassen, musste mal ein bisschen in der MSDN rumschnüffeln
    edit2: Guckst du hier



  • erstmal vielen dank für deine schnelle antwort, ja ich verwende windows

    ich erklär nochmal was passieren soll:
    Die Konsole wartet bis blabla.exe aufgerufen wird, wenn dies geschehen ist gibt sie den Text "blabla.exe gefunden" aus. ^^

    ich schau dann mal im msdn



  • Du musst halt solange warten und dir immer wieder die Prozesse auflisten lassen, bis er gestartet wird. Vielleicht gibt es auch eine spezielle WinAPI-Funktion, die dir mitteilt, wenn ein Prozess gestartet wurde, aber das wirst du wohl eher im WinAPI-Forum erfahren *nach Mod umguck* 🙂



  • Ne, gibt's (afaik) nicht. Die WinAPI kann erst beginnen, wenn die ein Prozess-Handle in der Hand hat - und das bekommst du erst, nachdem der Prozess gestartet wurde.

    Da bleibt also nur die HardCore-Variante:

    • hol dir alle Prozess-IDs im System (EnumProcesses())
    • lass dir zu jedem Prozess ein Handle geben (OpenProcess())
    • lass dir zu den Prozessen die Programmnamen geben (die Funktion weiß ich nicht aus dem Kopf)
    • vergleiche mit dem Namen deines Wunschprogramms


  • Dieser Thread wurde von Moderator/in CStoll aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Wenn Du selbstgeschriebene Prozesse überwachen willst kannst Du das mit einer
    Share-Datei - siehe sopen() - machen. Der Prozess schreibt bei seiner
    Anmeldung eine Nachricht in diese Datei, die vom Konsolen-Programm in einer
    Warteschleife ausgelesen werden kann. Das funktioniert immer, nur leider nicht
    für fremde Prozesse.


Anmelden zum Antworten