Mausrad deaktivieren

  • Hallo liebe Community,


    ich habe eine kleine GUI wo ein Excel-File embedded ist. Die GUI Größe ist an den Inhalt des Excel Files angepasst - und man soll natürlich auch nur diesen Inhalt sehen und nicht irgendwo runterscrollen. Ich hab schon geschaut ob ich es via Excel deaktivieren kann, aber da gibt es nur die Möglichkeit die Scrollbalken auszublenden, aber denn kann man natürlich weiterhin scrollen.


    Also dachte ich über den Umweg, stattdessen einfach im Skript das Mausrad zu deaktivieren. Mit "MouseWheel" kann ich zwar das Mausrad steuern, aber nicht deaktivieren. Zumal mein Mausrad ja auch nur im GUI deaktiviert werden soll (wenn die Maus sich darin befindet) - sonst kann der User ja im komplett Windows nichts mehr scrollen solange das Skript läuft. Habe die Suche im deutschen und englischen Forum genutzt aber nichts gefunden - alles Treffer sind immer nur zur Verwendung des Mausrads und nicht zur Deaktivierung.


    Jemand ne Idee wie ich das Mausrad hier blockieren kann?

  • Mit DllCallbackRegister eine eigene Maus-Procedure zur Bearbeitung der Mausevents erstellen (_MouseProc($nCode, $wParam, $lParam)).

    Du installierst einen Hook auf $WH_MOUSE_LL  (Funktion _WinAPI_SetWindowsHookEx).

    Wenn $nCode = $HC_ACTION und $wParam = $WM_MOUSEWHEEL dann:

    Ist deine GUI aktiv? - Nachricht verwerfen / sonst: Weiterleiten ans System


    Du siehst - nicht ganz trivial. Wenn du nicht alles richtig machst, ist die Wahrscheinlichkeit groß, dass du dein Programm und/oder Windows zum Absturz bringst.

    Deshalb habe ich auch keinen kpl. Code gepostet. Wenn du as nicht selbst umsetzen kannst: Lass die Finger davon!

  • Hallo BugFix

    ich habe keine Erfahrung mit in einer GUI eingebetteten Programmen. Wird da wirklich keine normale Windows GUI-Message empfangen? Sonst würde ja GUIRegisterMsg schon genügen, womit man ja nun nichts kaputtmachen kann..

    mirko2002 könntest du mal ein Beispielskript posten?

  • Guten Morgen zusammen :)


    Oh Gott, wenn das so ein schwieriges unterfangen wird, lass ich da tatsächlich lieber die Finger von.


    Habt ihr stattdessen eine andere Idee, wie ich das scrollen innerhalb der Excel-Datei verhindern kann? Hatte mal die Bibliothek im Visual Editor in Excel aufgerufen um zu schauen welche Befehle existieren, aber mit Scrollen war da natürlich nix mit bei :(


    Hier übrigens mein Testscript... man braucht sich einfach nur ne leere Excel-Datei erstellen und kann es dann so testen.


  • Update: Ich habe eine Lösung gefunden. Wurde nun doch über Excel realisiert und nicht über AutoIT, aber dennoch hier die Lösung:


    Also im Excel mit Alt+F11 ins VBA-Fenster wechseln.

    Links einen Doppelklick auf "DieseArbeitsmappe" und dort diesen Code hier einfügen:



    Private Sub Workbook_Open()

    Sheets("Tabelle1").ScrollArea = "$A$1:$G$21"

    End Sub



    Den Tabellennamen und den Bereich muss man natürlich entsprechend anpassen :)


    Ich markiere den Thread damit als gelöst :)