Laden...

Globalen Mausklick erkennen (WndProc)

Erstellt von Dani432123 vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.961 Views
D
Dani432123 Themenstarter:in
11 Beiträge seit 2014
vor 9 Jahren
Globalen Mausklick erkennen (WndProc)

Hallo,

ich möchte gerne auf Mausklicks (linke Maustaste (MT), mittlere MT, rechte MT), welche auch außerhalb meiner Anwendung stattfinden, einzeln reagieren.

Dies ist, denke ich, am einfachsten mit dieser Methode (?):

protected override void WndProc(ref Message m)
        {
            if (m.Msg == ???)
            {
            }
            base.WndProc(ref m);
        }

Allerdings weiß ich nicht, welchen hex Wert die verschiedenen Maustasten haben (wird ein zuvor definierter Hotkey gedrückt bekommt man z.B. die Nachricht 0x0312) -->

???

Ich hoffe ihr könnt mir helfen!

D
Dani432123 Themenstarter:in
11 Beiträge seit 2014
vor 9 Jahren


>

Das habe ich mir auch schon mal angesehen, allerdings möchte ich keine Bib einsetzen.

709 Beiträge seit 2008
vor 9 Jahren

Was spricht denn dagegen in den Quellcode der Bibliothek zu schauen?

16.842 Beiträge seit 2008
vor 9 Jahren

..... 🤔 🙄

Der Source ist doch verfügbar?!
Zudem gibt die CPOL Lizenz doch an, dass Du den Source verwenden darfst.

D
Dani432123 Themenstarter:in
11 Beiträge seit 2014
vor 9 Jahren

Na gut 😄
ich habe ein bisschen gesucht und getestet...

Aus der bib habe Folgenden Code entnommen:

private const int WM_MBUTTONDOWN = 0x207;

und ich meinem Code eingefügt:

protected override void WndProc(ref Message m)
        {
            if (m.Msg == 0x207)
            {
                   MessageBox.Show("test");
            }
            base.WndProc(ref m);
        }

Allerdings erscheint nur eine Textbox (bei einem Klick auf die mittlere Maustaste), wenn meine Anwendung im Vordergrund ist.

1.820 Beiträge seit 2005
vor 9 Jahren

Hallo,

@Dani432123:
Man sollte sich schon alles anschauen.
Deine Anwendung reagiert erstmal nur auf Ereignisse innerhalb der eigenen Fenster.

Um nun globale Maus- oder Tastaturereignisse abzufangen, muss man etwas mehr Aufwand betreiben, und sollte dabei auch keine Fehler machen, denn sonst funktioniert ggf. die Maus oder Tastatur nicht mehr korrekt (spätestens bis zum Neustart).

Für das von dir gewünschte Verhalten muss man Windows zunächst mitteilen, dass man über alle Ereignisse der Maus / Tastatur benachrichtigt werden möchte, und Windows dann auch eine entsprechende Routine mitteilen. Das alles ist in dem o.g. Projekt erklärt.

Nobody is perfect. I'm sad, i'm not nobody 🙁