Verzeichnis Problem



  • Hi, also ich hab ein wunderbares Programm welches mir einen bestimmten Prozess (irgend einen ) zeitlich überwacht und mir dann eine txt file schreibt mit den ganzen Daten.

    Allerdings hab ich folgenden Fehler bemerkt :

    Wenn ich FireFox überwachen will, fängt das Programm an zu spinnen und geht aus dem Überwachungsprozess sofort wieder raus, es sei den ich lösche die "Privaten Daten" ( chronik,cache etc.), dann funktionierts ganz normal.

    Hat jemand ne Ahnung woran das liegen könnte ?



  • Wohin schreibst du denn deine Textdatei? Möglicherweise gibt es da eine Kollision mit Daten, die Firefox schreiben will. (btw, was passiert, wenn du die Textdatei nicht schreibst?)

    PS: Und in solchen Situationen ist der Debugger eine nicht zu unterschätzende Hilfe 😉



  • Die Textdatei schreib ich ins selbe Verzeichnis wo die .exe liegt.
    Hab eben PC-Neustart gemacht, jetzt scheints zu gehen, ich verstehs nich...

    Ok werd mal Debuggen gehn 🙂



  • Also das Problem liegt eigentlich auf der Hand :

    Wenn der Firefox schon gestartet ist ( in einem anderen Fenster ) dann is eigentlich klar das CreateProcess() das nicht mehr erkennt, weils halt schon läuft und dann funtzt das ganze nicht mehr.

    Ein weiteres Problem ist mir aufgefallen, zb beim öffnen vom Client : Pokerstars. Da wird beim öffnen erstmal ein kleines Updatefenster geöffnet und dann erst das Mainfenster. Daher geht die Überwachung auch von diesem Prozess flöten ( weil CreateProcess() das updatefenster als erstes geöffneten Prozess ansieht.

    Die Frage ist nun, wie löse ich das am geschicktesten ? Wahrscheinlich mit FindWindow(), aber wie zum Teufel mache ich dem Programm zb klar, das nicht unbedingt das erste Fenster das richtige ist...eigentlich unmöglich oder ?



  • Ja, FindWindow() dürfte der richtige Ansatz sein - ob du das richtige Fenster gefunden hast, mußt du dann selber feststellen (notfalls kannst du mit FindWindowEx() weitersuchen).

    (btw, was genau willst du überwachen? Prozesse oder Fenster?



  • Eigentlich Prozesse, und das tut es auch irgendwie, allerdings hab ich bei der Umsetzung ziemlich gemogelt und das Programm gaukelt einem nur vor das es eine gewünschte .exe überwacht. Denn es geht beim starten einfach in SW_HIDE mode und taucht halt erst wieder auf wenn der Prozess ( also eigentlich das Fenster ) geschlossen wird. Allerdings merkt sich das Prog. halt die Zeitpunkte wann der Prozess/Fenster gestartet wurde und wann es wieder geschlossen wurde, daher entsteht schon irgendwie das Gefühl einer Prozessüberwachung 🙂
    Das Problem ist glaub ich das ich halt mit CreateProcess() nur das Window bekomme, und nicht den eigentlichen Prozess...

    Wenn einer nen Tip für mich hat , nur her damit ^^



  • CreateProcess liefert schon den Prozess-Handle - du mußt nur wissen, wie du damit umgehen mußt. Wie stellt denn dein Programm fest, daß sich das Ziel beendet hat? (einfachste Lösung wäre es, das von CreateProcess() bekommene Prozess-Hanlde an WaitForSingleObject() zu übergeben)


Anmelden zum Antworten