Auf Maus reagieren in anderer Anwendung



  • Hallo.

    Wie kann ich auf die Maus (bspw. linke Maustaste) reagieren, auch wenn ich in einer anderen Anwendung bin, also mein eigenes Prog nicht im Vordergrund ist?
    Mein Prog ist im Hintergrund und wenn die linke Maustaste irgendwo (andere Anwendung bzw. Desktop) gedrückt wird, bekommt mein Prog das mit und öffnet bspw. ne MessageBox().

    Ich habs mit SetCapture/ReleaseCapture versucht, funktioniert aber nicht so, wie ich gedacht hatte, weil die Maus nur gecaptured wird, wenn ich die linke Maustaste gedrückt halte. Ich möchte aber da, dass der User ganz normal weiterarbeiten kann.

    Kann mich jemand in die richtige Richtung schubsen? Danke.

    P.S.: http://www.codeguru.com/misc/wm_nclbuttonup.html und http://www.codeproject.com/dll/hooks.asp hab ich schon gefunden, ist aber nicht das, was ich brauche.



  • Dann musst du dir wohl oder übel einen Mousehook schreiben.



  • Das wird ja (anscheinend) bei http://www.codeproject.com/dll/hooks.asp erklärt, aber ich versteh das nicht. Und das Prog kann ich nicht kompilieren. (Irgendwas mit "unresolved external symbol", was mir als Anfänger nun gar nichts sagt. 😞 )

    Aber ich werd mal google, vielleicht finde ich ja ne deutsche Anleitung. (Gerade entdeckt: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39184.html Ist zwar für c++ Builder, aber vielleicht krieg ichs ja gebacken?)



  • Hab mir das Beispiel mal gedownloadet und muss sagen das sich dies ohne probleme kompilieren lies. Es sind zwei Projekte, einmal die Hookdll Datei und dann das eigentliche Programm dazu...



  • *klatsch*

    Ich bin sooo doof. 😞

    Danke, jetzt geht's.



  • Sorry, für Doppelpost, aber ich hänge wieder 😞

    Also: ich weiß nun, dass ich Hooks brauche. Ich hab herausgefunden, was Hooks sind, welche Arten es gibt und dass ich für meinen Fall einen system-weiten Hook benötige. Ich weiß auch, dass ich die Hook-Prozedur in eine DLL verpacken muss, aber genau da hänge ich nun fest, denn ich weiß nicht

    a) wie ich eine solche DLL erzeuge (Datei->Neu->Projekt->Visual C++ Projekte->MFC DLL wird es ja wohl nicht sein, oder?)

    b) wie ich mit meinem Prog darauf zugreifen soll, also wie ich die verbinde.

    Ich hab gegoogelt, aber keine Schritt-für-Schritt-Anleitung gefunden.
    Auch hier hab ich nach "hook dll" gesucht, aber nichts gefunden.



  • Schau dir doch mal das Beispiel an das du oben genannt hast. Da ist alles drin was du benötigst.



  • Das weiß ich mittlerweile auch, aber in dem Beispiel ist auch viel "Müll" drin, den ich nicht brauche.

    Folglich muss ich selber so ein Projekt+DLL erstellen, aber dafür hab ich nicht genug Ahnung und n HowTo finde ich dazu nicht. Was der Typ in dem Tut schreibt, finde ich ziemlich konfus/undeutlich. Mit Aussagen wie In the header file, add this to the protected section of the class: kann ich als Anfänger nichts anfangen. Und dass er in dem Tut eine myhook.cpp beschreibt, verstehe ich auch nicht, denn in der ZIP-Datei gibt es eine myhook.cpp überhaupt nicht. Somit kann ich gar nicht nachvollziehen, was er das macht. 😞

    Ich denke mal (weil ich nun schon sehr viel über den Kram gelesen habe), dass das alles total einfach ist und für einen Profi "5-Minuten-Klick-und_Tipp-Arbeit" wäre, aber für mich als DAU...*heul* 😕



  • Niemand da, der sich 15 Minuten Zeit nehmen und mir helfen kann/will?
    Ich finde nur Anleitungen, die ganz oberflächlich erklären, wie das geht oder Anleitungen, die sich auf VC6 beziehen oder Anleitungen, die nicht vollständig sind, weil Bilder fehlen oder sowas. 😞





  • Kenne ich und ist auch ziemlich lehrreich. Allerdings wird nicht auf systemweite Hooks mit DLL-Einsatz eingegangen und genau das brauche ich ja.

    Das Beispiel von CodeGuru behandelt zwar einen systemweiten Tastatur-Hook, aber der Artikel geht überhaupt nicht auf die "Entstehung" ein, so dass man (=ich) nicht nachvollziehen kann, wie das Projekt entwickelt wurde, um dann selber eines erstellen zu können.
    Und aus dem vorhandenen Code kann man nichts lernen, denn der ist relativ dürftig kommentiert.


Anmelden zum Antworten