Eigenen Prozess informieren wenn ein anderer Prozess gestartet wird



  • Hi,

    meine Frage ist jetzt, ob mann z.B. eine Funktion "registrieren" kann das man erfährt das ein Prozess gestartet bzw beendet wurde oder ob man eine Nachricht bekommt!?

    Hintergrund is der:
    Ich will einen "Auto DLL Injector" schreiben der automatisch die angegebene DLL in einen bestimmten Prozess injeziert.

    Bspl. Hab eine DLL die in Minesweeper einen Menupunkt hinzufügt mit dem man die Bomben anzeigen lassen kann. Jetzt muss ich aber immer wenn ich MineSweeper öffne die Dll manuel injezieren und das möchte ich somit umgehen :).

    Man könnte natürlich in einem Interval mit "CreateToolhelp32Snapshot" usw alle Prozesse abrufen und dan schaun ob der gewisse Prozess dabei ist, aber ich find das unschön.

    Danke schon mal 🙂

    Mfg PinguGroup



  • warum startes du von deinem injector nicht das programm in dem du die dll injezieren willst.

    mit creatprocess bekommst du alles was du brauchst um die dll in den gestartetet process zu injezieren.

    alles andere verbraucht unnötig resourcen.



  • Pingu-Group schrieb:

    Hi,

    meine Frage ist jetzt, ob mann z.B. eine Funktion "registrieren" kann das man erfährt das ein Prozess gestartet bzw beendet wurde oder ob man eine Nachricht bekommt!?

    Hallo,

    mit OpenProcess einen Handle auf diesen Process sichern. Mit möglichst vielen Zugriffsrechten. Dann einfach: WaitForInputIdle() mit diesem Handle aufrufen und der Prozess meldet sich bei Dir, wenn er abgewürgt wurde.

    Ebenso ist möglich mit WaitForSingleObject() auf hProcess zu warten.

    Ach so: Ich hasse Scripter! 😃



  • @rT!f@Ct schrieb:

    warum startes du von deinem injector nicht das programm in dem du die dll injezieren willst.

    Sorry wenn ich mich ungenau Ausgedrückt habe.
    Ich möchte ein Programm schreiben das beliebige DLLs in beliebige Prozesse injeziert.
    Der User soll z.B. angeben
    MineSweeper.dll --> winmine.exe
    Solitär.dll --> sol.exe
    usw.

    und dann wenn ein Prozess mit diesem Name gestartet wird soll mein Programm die DLL injezieren.
    Ich hoff mal das es jetzt ein bisschen klare is was ich machen möchte :).

    @rT!f@Ct schrieb:

    alles andere verbraucht unnötig resourcen.

    Deswegen frag ich ja nach einer Methode mit der ich Benachrichtigt werde, wenn ein Prozess gestartet wird ;).

    Gruß PinguGroup



  • @Pingu-Group
    ich habe dich schon richtig verstanden 😉

    der weg dahin wäre nur anderst rumm.

    in deinem fall:
    startes der user den injector der darauf wartet bis minesweeper oder solitär startet. und muss darauf hin noch minesweeper oder solitär starten.

    bei dem wie ich es meine, müste der user nur den injector starten und dann zB in einer liste auswählen welches prog. (minesweeper, solitär...) er spielen will. zudem hat die liste den vorteil das du Parameter an ein element hängen kannst.
    Minesweeper-> Pfad zur Minesweeper.exe / Pfad zur Minesweeper.dll

    aber ist natürlich geschmackssache.



  • was soll so ein schrott bringen? was willst du überhaupt tun? wozu soll das gut sein?



  • @ascda
    mann sollte in deinem fall mal den reiter Unregistrierte, in unqualifizierte Bemerkungen umbenennen.



  • nö ich weiß durchaus wie man sowas macht, aber wozu soll das gut sein, außer sich das system zu zerballern? 🙄



  • So, so, Deine Methode zerballert also das System...

    Gut, dass Du sie nicht postest! 👍



  • hooks sind nix für kinder, frag doch die anderen pro's. ich kann es einfach nicht gutheißen, wenn ihr meint, ihr müsst hooks im system verankern, wenn ihr deren arbeitsweise nicht mal versteht und nicht mal einen vernünftigen grund für ihren einsatz nennen könnt. sorry sowas ist einfach nur fahrlässig!



  • @ascda
    soso dann hat gott dir also ins gehirn geschissen und du die weisheit mit löffeln gefressen.

    wie soll man es den deiner meinung nach lernen, wenn nicht by doing.

    es ist auch keiner verpflichtet auf nachfrage den grund für seine frage zu nenen oder was er damit bezweckt.

    und was geht es dich an was er mit seinem pc macht. und wenn es im den processor durchbrennt, weil er sooo file hooks verankert. es kann dir doch egal sein.

    aber hauptsache den mund aufgemacht und gülle gelabert.



  • Martin Richter schrieb:

    Dieses Forum kann kaum noch tiefer sinken... 👎
    Just my 2 cents!



  • Hey,

    @ascda
    wo is na bitte dein Problem? Ich hab doch nur eine Frage gestellt zu einem Problem das mir beim programmieren eines Programmes das ich aus lern Zwecken & natürlich Spaß am programmieren für mich daheim schreib.
    Wennste meine Frage ned beantworten willst, aber könnstest is des ja OK, aber bitte mach mich doch ned so an ;).

    @@rT!f@Ct
    Danke für dein Lösungsvorschlag, aber ich hab mir des iwie schon so in den Kopf gesetzt und jetzt möch ich des au so in der Art lösen. Kennste doch bestimmt auch oder ;).

    Wäre noch über jedlichen Vorschlag dankbar

    Gut Nacht
    Pingu-Group





  • Hey,

    ascda schrieb:

    http://www.codeproject.com/KB/threads/procmon.aspx

    ich danke dir vielmals das ist genau das wonach ich gesucht habe :).

    Ich werd mir das mal anschauen und versuchen zu verstehen. Das kann aber ein bissle dauern, wenns dann wieder Probleme gibt sag ich einfach wieder bescheid ;).

    Grüßli Pingu-Group

    PS: Warum auf einmal diese Hilfsbereitschaft ?



  • Nachrichten geschehen üblicherweise mit SendMessage zwischen Fenstern, egal ob diese im eigenem Prozess oder in verschiedenen Prozessen untergebracht sind. Bei Multi-Prozess-Anwendungen musst Du Dir also passende Fenster-Handles beschaffen. Dafür gibt es verschiedene Möglichkeiten. Eine solche Möglichkeit ist eine Share-Datei, in die jeder gestartete Prozess sein Fenster-Handle einträgt. Ein Mutex-Objekt kann Überschneidungen beim Schreiben / Lesen vermeiden.


Anmelden zum Antworten