Hooks - Mausklick unterdrücken


  • Mod

    Ich weiß nicht was Du eigentlich willst.
    Um ein Fenster anhand einer Mausposition zu finden brauche ich keinen Hook. Das geht easy mit WindowFromPoint/ChildWindowFromPoint
    Und die Infos, welcher Prozess usw. das ist gibt es mit GetWindowThreadProcessId.

    Keine Hexerei mit Hooks! Also was willst Du?



  • Also:

    Ich will, ähnlich wie es Spy++ macht, mir Infos zu den Steuerelementen eines Fensters anzeigen lassen, wenn ich mit der Maus darüber fahre (ohne eine Maustaste gedrückt zu halten). Wenn ich nun mit der linken Maustaste auf ein beliebiges Steuerelement klicke, will ich dieses Element in meiner Anwendung fokussieren und weitere Informationen anzeigen, sowie die Möglichkeit geben Nachrichten die dieses Fenster versendet und empfängt aufzeichnen zu lassen.

    Das Problem ist halt, das ein Linksklick auf ein Steuerelement (in einer anderen Anwendung), z.B. auf einen Button, natürlich das onClick-Ereignis dieses Buttons auslöst. Genau das will ich aber verhindern solange die 'Capture-Funktion' in meiner Anwendung aktiv ist.

    Das geht easy mit WindowFromPoint/ChildWindowFromPoint

    Weißt Du was diese Funktionen genau machen? Wie wird da intern das Handle ermittelt?



  • Rahvin schrieb:

    Das geht easy mit WindowFromPoint/ChildWindowFromPoint

    Weißt Du was diese Funktionen genau machen? Wie wird da intern das Handle ermittelt?

    So langsam wird das schon echt nervig hier 😡 mit dem Heute-ist-total-in-Schlagwort "Hooks" hier im Forum.
    Anscheinend schwappt hier eine Welle von "Möchtegern-Profi-Programmierern" über die alles über Hooks Bescheid wissen oder wissen möchten, aber nicht mal die elementarste Grundlage beherrscht:

    Nutze die Suche im Forum, Google oder MSDN!

    Erst recht wenn einer eine simple Funktion wie WindowFromPoint() nicht versteht... (jedenfalls simpel verglichen mit den Hook-Techniken)

    Martin



  • So langsam wird das schon echt nervig hier 😡 mit dem Heute-ist-total-in-Schlagwort "Hooks" hier im Forum.
    Anscheinend schwappt hier eine Welle von "Möchtegern-Profi-Programmierern" über die alles über Hooks Bescheid wissen oder wissen möchten, aber nicht mal die elementarste Grundlage beherrscht:

    Nutze die Suche im Forum, Google oder MSDN!

    Erst recht wenn einer eine simple Funktion wie WindowFromPoint() nicht versteht... (jedenfalls simpel verglichen mit den Hook-Techniken)

    Martin

    Danke für deinen konstruktiven Beitrag 🙄.

    Nur zur Info:
    Ich bin gelernter und studierter Informatiker bzw. Anwendungsentwickler und Sun Certifief Java Programmer. Leider bin ich bis jetzt mit C/C++ nur rudimentär in Kontakt gekommen und habe gehofft, dass mir hier freundlich geholfen werden kann.
    Hooks brauche ich für eine Abschlussarbeit und nicht um irgendwelchen Scheiß damit zu machen. Um mich in das Thema zu vertiefen probiere ich die eine oder andere Sache aus, auch wenn dazu Hooks nicht unbedingt notwendig wären. Meistens bekommt man problembezogene Hilfe eher in einem Forum als in der msdn oder gedruckter Literatur.

    Erst recht wenn einer eine simple Funktion wie WindowFromPoint() nicht versteht

    Was die Funktion bewirkt ist mir klar. Da du ja scheinbar ein Fachmann bist, kannst du mir bestimmt auch erkläten, wie die Funktion genau intern funktioniert und wie sie das jeweilige Fenster bestimmt...


  • Mod

    Dies ist eine interne Funktion der Windows API. Sie läuft den Baum aller Fenster durch und bestimmt welches fenster an diesem Punkt nicht verdekct und eben sichtbar ist.

    Was wilst Du denn sonst noch wissen, was in der Funktionebeschreibung nicht steht?
    Ich verstehe Deine Frage in keiner Weise!

    Ansonsten "nervt" mich das Thema Hooks auch gewaltig, weil immer wieder mit solchen Kanonen auf Spatzen geschossen wird.
    Wen Du natürlich aufzeichnen willst musst Du wie Spy++ eine DLL in die entsprechende WindowProc injezieren. Dies führt wie bei Spy++ zu einer allgemeinen Destabilisierung des Systems, wenn das zuviele Fenster und Hooks werden, oder wnen ganz und gar noch der Debugger aktiv ist.

    Warum willst Du dass, wenn Spy++ vorhanden ist?



  • Also, mir sind die Gefahren und Risiken von Hooks durchaus bewusst und mir ist auch bewusst, dass man sie, wenn nicht wirklich benötig, nicht benutzen sollte.

    Allerdings schreibe ich, wie gesagt, eine Arbeit über Hooks und muss irgendwo anfangen. Daher wollte ich eine Anwendung ähnlich Spy++ schreiben um das Ganze selbst besser zu verstehen und darauf aufbauen zu können. Die Ergebnisse werde ich dann mit in die Arbeit einfließen lassen.

    Ich bekomme hoffentlich in dieser Woche von Amazon noch etwas Literatur. Vielleicht werde ich dadurch noch etwas schlauer. Wie bereits gesagt, finde ich es in Foren sehr angenehm, das man dort von Leuten mit Fachkentnissen Antworten auf problemspezifische Fragen bekommt, die man in der Literatur nicht so einfach oder gar nicht findet. Meine eigentlich Frage hatte ja auch nichts mit WindowFromPoint() zu tun, sondern lautete: "Wie kann ich mit einem Maus-Hook den Linksklick der Maus global unterdrücken?"

    Wenn darauf niemand antworten kann oder möchte ist das ja ok. Trotzdem möchte ich mich für die bereits gegebenen Antworten bedanken.



  • Rahvin schrieb:

    Ich bin gelernter und studierter Informatiker bzw. Anwendungsentwickler und Sun Certifief Java Programmer.

    wow. 👍 dafür bist du aber ziemlich inkompetent.

    Leider bin ich bis jetzt mit C/C++ nur rudimentär in Kontakt gekommen und habe gehofft, dass mir hier freundlich geholfen werden kann.

    wird dir auch, aber hier macht keine deine arbeit für dich. wenn du wissen willst wie xyz funktioniert, dann lies die dokumentation zu xyz.



  • SetCapture!



  • @rechtgeber:
    omg, ich glaub ich lasse das heute besser, das führt hier scheinbar nirgendwo hin.



  • gelernter spacko und besserwisser, dazu noch certified falschposter und lernresistent von geburt an.



  • gidf.de
    Aber trotzdem:
    WH_MOUSE_LL und return 1

    http://www.themssforum.com/VC/Remove-mouse/



  • rechtgeber schrieb:

    gelernter spacko und besserwisser, dazu noch certified falschposter und lernresistent von geburt an.

    Das schöne ist, dass sich manche Leute durch ihre Posts selber bloßstellen. Das erspart dann eigentlich jeglichen Kommentar 🙂



  • Jochen Kalmbach schrieb:

    gidf.de
    Aber trotzdem:
    WH_MOUSE_LL und return 1

    http://www.themssforum.com/VC/Remove-mouse/

    Danke für die Antwort!

    Eins noch zum Schluß:

    Tut mir leid, falls es etwas Großkotzig rübergekommen sein sollte aber ich möchte mich halt ungern als 'Möchtegern-Profi-Programmierer' bezeichnen lassen. Ich denke das die meisten hier sehr viel Ahnung von Ihrer Materie haben aber in anderen Bereichen auch eher 'unerfahren' oder neu sind. Ich denke jeder hier ist dankbar, wenn er zu einem Thema in welchem er kein Profi ist eine sachliche Antwort bekommt. Die Informatik ist ein zu großes Gebiet um in allen Bereichen ein Experte zu sein.

    Ich bin mir sicher, das ich dem einen oder anderen Klugscheißer in meinen Fachgebieten auch noch einiges beibringen könnte. Daher finde ich solche unqualifizierten Posts wie

    wow. 👍 dafür bist du aber ziemlich inkompetent.

    oder

    gelernter spacko und besserwisser, dazu noch certified falschposter und lernresistent von geburt an.

    eigentlich immer wieder sprechend für den Charakter des Posters.


Anmelden zum Antworten