Maus Blocken

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von headnut99.

    Maus Blocken

    hey,

    Ich brauche nen Code mit dem man die Maus blocken kann, sprich das Clicks außerhalb meiner Form nicht akzeptiert werden.

    Ich hab schon nen bissel geforscht und bin fündig geworden

    VB.NET-Quellcode

    1. Private Declare Function BlockInput Lib "user32" (ByVal fBlock As Integer) As Integer
    2. 'Ein/aus
    3. BlockInput(1)
    4. BlockInput(0)

    Das blockt aber die Komplette Maus und das Systemweit.

    Meine Ansätze waren,
    • einen bereich setzen den die maus nicht verlassen kann,
    • click events die nicht in meiner Form sind zu ignorieren, wohl eher der schwerige variante.
    hoffenlich könnt ihr mir helfen,

    MFG headnut
    Das war mein erster gedanke, aber keine Vorstellung wie das gehen soll, wie gesagt bin ein blutiger anfänger!

    Mein ansatz!

    VB.NET-Quellcode

    1. Public Declare Function SetCapture Lib "user32.dll" (ByVal hwnd As Long) As Long
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. SetCapture(Me.Handle)
    4. End Sub


    der Parameter hwnd gibt ja das Fensterhandle an, wo die Maus-ereignisse abgefangen werden/sollen. Also gebe ich meiner Form das Handle "Setcapture(me.handle)"
    Tatsache ist jedoch das ich außerhalb der form noch mit der maus arbeiten kann.
    Wo liegt das prob?

    mfg headnut
    erstens mach aus As Long As Integer oder As IntPtr, dann verwendest du am besten mal das Handle 0, bin mir zwar nicht sicher, könnte aber funktionieren ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    IntPtr->IntegerPointer, so würde ich das mal übersetzen, und ein Pointer ist ein Verweis auf einen Speicherort, das ganze wird hier als Integerwert gespeichert ;)
    As Long ist bei VB 6 32 Bit groß und bei .Net 64 Bit, deshalb sollst du As Integer(Int32) verwenden...

    acsho das hab ich irgendwie dann wohl falsch verstanden, also Handle bleibt Me.Handle(jedoch vom Typ IntPtr)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Gut, hab das gleich mal getestet, man kann immer nocha außerhab meiner Form interagieren!
    wen die Api alle Mouse-events an das im Arg "hwnd" gepeicherte handle abfängt frag ich mich wieso das net geht!

    mfg headnut

    support.microsoft.com/kb/319524/de
    Globale Hooks werden in .NET Framework nicht unterstützt.
    Sie können keine globale Hooks in Microsoft .NET Framework implementieren. Um einen globalen Hook zu installieren, muss ein Hook einem systemeigenen DLL-Export selbst in einem anderen Prozess einfügen, die eine gültige, einheitliche Funktion zum Aufrufen von benötigt haben. Dies erfordert eine DLL-Export. DLL-Exporte werden von .NET Framework nicht unterstützt. Verwalteter Code hat kein Konzept für einen konsistenten Wert für einen Funktionszeiger, da diese Funktionszeiger Proxys sind, die dynamisch erstellt werden.
    lol? Hab ich das falsch verstanden? oder ist mein vorhaben nicht möglich ? wtf

    mfg headnut

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „headnut99“ () aus folgendem Grund: Unmöglich xD