Zustand einer Applikation überwachen?



  • Hi,

    wie stelle ich es an, dass mein Programm erkennt, ob ein drittes Programm läuft oder nicht? Falls dieses überwachte Programm abstürzt o. ä., dann will ich das merken.

    Danke im Voraus!

    mfg



  • Geht nicht mit Standard-C++. Sag dein Compiler/Betriebssystem und du wirst in das entsprechende Forum verschoben werden. Danke 😉



  • kommt auf die plattform an, aber du könntest z.B. Signale an die andere anwendung schicken und auf eine antwort warten. entsprechend müsstest du dann noch ein time-out für die antwort festlegen. ansonsten könntest du, was ziemlich umstädnlich wäre, auch über dateien mit der anwendung kommunizieren.



  • Ich nutze den BCB 5 und Plattform ist Windows. Ich lege Wert auf w2k und XP Kompatibilitt. Darf aber ruhig auch auf W9x/ME funktionieren.

    Wie muss ich mir das Vorstellen mit dem Nachrichten schicken? Ist dazu jede andere Applikation in der Lage, dass sie mir ne Antwort zurücksendet? Bin gespannt ...

    THX!



  • An deiner Stelle hätte ich ins WinAPI-Forum gepostet...

    Jede andere Applikation ist dazu nicht in der Lage (dir was zurück zu schicken).

    Was wichtig ist: Du brauchst ein HWND der anderen Anwendung... Dann kannst du nachprüfen mit ::IsWindow(...)

    Das HWND bekommst du über FindWindow

    [ Dieser Beitrag wurde am 10.02.2003 um 18:34 Uhr von MaSTaH editiert. ]



  • Thread verschoben ins WinApi Forum. WinAPI



  • Unter dem Begriff WinDebug-API stellt Microsoft eine Reihe von Strukturen und Systemfunktionen zur Verfügung, mit denen das Debugging von ausführbaren Dateien unter Windows NT/2000/XP unterstützt wird.

    Schau mal in die MSDN unter CreateProzess (Parameter/Flags: DEBUG_PROCESS, DEBUG_ONLY_THIS_PROCESS) und DebugActiveProzess / WaitForDebugEvent.

    Eine Buchempfehlung: Professionelles Software-Debugging unter Windows NT, Hanser Verlag

    Bewaffnet mit diesem Wissen sollte deinem Vorhaben eigentlich nichts mehr im Weg stehen ... 🙄



  • Eigentlich macht man das mit FindWindow

    cu para
    😃



  • Na klar, FindWindow gibt jederzeit bereitwillig Auskunft, wann und warum eine ganz bestimmt Anwendung abgestürzt o.ä ist 🙄

    [ Dieser Beitrag wurde am 10.02.2003 um 21:59 Uhr von JSFreak editiert. ]



  • Ich danke EUch für die Antworten. Jetzt hab ich schonmal nen Ansatzpunkt. ICh hab davon zwar noch nie was gehört, aber ich kann mir jetzt auf jeden Fall mal ein Bild davon machen.

    Ansonsten hört Ihr wieder von mir. 😉

    Danke!

    MfGr



  • @JSFreak: Und was, wenn der Prozess schon existiert?



  • Dann hast du eben Pech gehabt (es sei denn, du kennst dich mit Debuggern aus und weißt, dass die für diesen Zweck die Funktion VirtualQueryEx verwenden)! 🙄



  • hi,

    Wenn das überwachende und das überwachte Programm beide zu dir gehören (du sie geschrieben hast), dann reichen eigentlich Messages (SendMessage() und abfangen im MessageLoop) - und die funktionieren schon seit Win95 und noch bis heute bei WinXP.

    lw



  • Hi,

    ich habe diesbezüglich

    HWND FindWindow(
    LPCTSTR lpClassName,
    LPCTSTR lpWindowName
    );

    nochmal ne Frage.
    Wenn ich nen WindowName suche, kann ich da mit Wildcards arbeiten.
    Was ich genau meine ist, ob ich genau diesen NAmen kennen muss oder ob man das irgendwie in der Art *IMMER_IM_NAMEN* machen kann.

    Der FEnstername, den ich suche, enthält immer ein/zwei bestimmte Worte, aber es kann auch immer noch was dazu stehen.

    Wie kann ich damit umgehen?

    Danke!



  • Nix Wildcards.



  • Vielleicht suchst du sowas wie EnumWineodws?! Ansonsten kannst du ja z.B. einfach den Fensternamen leer lassen und z.B. nur anhand der Fensterklasse suchen 😉


Anmelden zum Antworten