pointPicker - Mauspositionssteuerlement

    • Beta

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

      pointPicker - Mauspositionssteuerlement

      pointPicker 0.0.3.32 BETA

      Für ein Projekt habe ich mich mit den GlobalHooks beschaeftigt und im weiteren diente es dazu die Mausposition auf dem Desktop festzustellen - nicht festzulegen. Im Detail ergab es eine Loesung die ich direkt in mein Programm eingebunden habe, was allerdings am Ende doch etwas zu umstaendlich war, da ich zum einen einfach nur die GMA.UserActivityMonitor.dll eingebunden und verwendet haben (Detail zu dieser DLL findet ihr hier: ).
      Da kam die Idee einfach ein Steuerelement zu bauen das genau das alles abhandelt, dabei kam der 'pointPicker' - Ein Steuerelement zur Mauspositionsauswahl.

      Fangen wir doch mal mit den Funktionen an:
      • Windows XP, Vista und 7 / .Net 3.5
        Das Steuerelement laeuft (bisher) auf jeder Windowsversion ab XP mit .Net 3.5

      • Eigene Maushooks
        Das Steuerlement kommt als einzelne DLL und verwendet ein eigenes MausHook-System, das direkt mit einkompiliert wurde - keine DLL einkompiliert und somit sehr einfach anpassbar an kommende Erweiterungen der Hooks, oder Benutzerwuensche.

      • An den Programmstyle anpassbar
        Das Steuerelement besteht aus 2 Teilen: Einen Label (Anzeige der Position / Informationen) und einer PictureBox, welche Stylebar ist (Bild) und somit lassen sich sehr gut die eigenen Grafiken einbinden. Diese sind 16*16 Pixel. Weitere dazu aber bei den Properties / Events.

      • Verschiedenen Mausbuttons und Klickbedingungen einstellbar
        Man kann per Property Einstellen welches Button zur Auswahl der Position benoetigt wird und welche Klickart hier verwendet werden muss: Klick, Doppelklick, MausDown / Up

      • Vorschaufunktion
        Wenn diese Funktion aktiv ist (Vorgabe), dann wird bei einem Doppeklick auf die Position (muss eine eingegeben sein) die Mausposition (+ ein kleiner Umkreis) als Popupinformation angezeigt.

      Screenshot:
      Properties
      • Supress
        Wann soll der Tastendruck nicht weitergereicht werden, als pointPicker.hType.*

      • Button
        Das Button das benutzt wird um die Auswahl zu beenden, als MouseButtons.*

      • Modifier
        Der Typ des Klicks der beim beenden der Auswahl noetig ist, asl pointPicker.cModifier.*

      • Preview
        Vorschau aktiv/deaktiv? Boolean.

      • PreviewTime
        Die Zeit in Millisekunden fuer die Anzeige der Vorschau. Integer.

      • Style
        Die Art der Visualisierung: Anzeige eines Textes (InfoWorking), oder der aktuellen Position wenn man sich im Auswahlmodus befindet als pointPicker.wStyle.

      • InfoEmpty
        Der Text wenn kein Wert gesetzt ist, String.

      • InfoWorking
        Der Text der im Modus 'Text' angezeigt wird (siehe Style), als String.

      • InfoFormat
        Das Format der Positionsanzeige, als String - {0} = x, {1} = y.

      • ImageNormal
        Das Bild fuer das nicht deaktivierte Steuerelement, als Image.

      • ImageActive
        Das Bild fuer die aktive Auswahl, als Image [Wird angezeigt wenn der Benutzer die Auswahl taetigt]

      • ImageDisabled
        Das Bild fuer das deaktivierte Steuerelement, als Image.

      • isPicking
        Gibt den Status an - Wahr wenn gerade eine Auswahl aktiv ist, als Boolean.

      • DebugMode
        Bestimmt ob das Steuerelement im Entwicklermodus ist - Wahr bedeutet, dass das Ereignise pickException mit dem exCode "Debug" bei vielen Aktionen aufgerufen wird, als Boolean.

      • Point
        Setzt oder gibt den Mauspunkt zurueck, als Point.

      Events
      • selectionStarted
        Wir ausgeloest, sobald die Auswahl beginnt, keine Argumente.

      • selectionFinished
        Wird ausgeloest, sobald die Auswahl beendet wurde, keine Argumente.

      • previewVisibile
        Wird ausgeloest, sobald eine Vorschau angezeigt wird, keine Argumente.

      • previewInvisible
        Wir ausgeloest, wenn die Vorschau wieder ausgeblendet wird.

      • pickException
        Wird ausgeloest wenn ein Fehler aufgetreten ist, als Argumente gibt es einmal den ExceptionCode (exCode-Eigenschaft) und die Details als Exception.

      • Click
        Klick auf die Position mit sender als Object und e als EventArgs.

      • DoubleClick
        Doppelklick auf die Position mit sender als Object und e als EventArgs.


      Demoanwendung
      Eine kurze Demo mit fast alle Funktionen gibt es natuerlich auch. Es fehlt nur der Umschalter zwischen Positions und Textmodus - Dafuer sind aber sonst alle Funktionen beispielhaft behandelt. Download unten.

      Zusammenfassung
      • IDE
        Visual Studio 2010 Ultimate
      • Framework
        .Net 3.5
      • Lizenz
        Freeware, CloseSource
      • Vorraussetzungen
        .Net 3.5 und eine Maus (ohne macht es wenig Sinn)

      Downloads
      sfmStatus @konzeption: 2%
      Nein, sicherlich ginge es auch mit einer anderen Hausnummer. Aber meine Kunden sind auf 3.5 und meine Restsoftware auch, daher halte ich mir 3.5 als Standard - Wie bei Sammlern: Irgend wann brauch ich das noch!
      sfmStatus @konzeption: 2%
      Aber solang man doch nur .NET2.0 braucht, sollte man es nutzen. Programme die in .NET2.0 Entwickelt sind können diese Lib nicht nutzen, und das wäre doch blöd oder?
      wenn man Funktionen braucht die .Net>2.0 sind, kann man immernoch Hochstellen.
      Da muss man denke ich niht viel mehr zu sagen, ich entwickel auf 3.5 und stelle meine freien Werke unter 3.5 zur Verfuegung - Fuer nicht ist an der Stelle meine Ausgangssituation der Standpunkt - Im Releasestadium kann man gerne nochmal auf das Thema eingehen. Bis der Umfang nicht klar ist und keine Finalversion ansteht erstmal nicht.

      Anregungen sind natuerlich genaus willkommen wie Fehlermeldungen - Es sind sicherlich noch Fehler vorhanden.
      sfmStatus @konzeption: 2%
      Ich hab mir mal das Testprogramm angesehen, konnte damit aber nichts anfangen.
      Auch nach mehrmaligen Lesen deiner Beschreibung, hat sich mir kein tieferer Sinn entschlossen,
      vielleicht könntest du diese etwas umformulieren, damit klar ist, was man mit deinem Steuerelement anfangen kann.

      Ansonsten kann ich mich nur Tsuyo anschließen, da auch ich kein Fan von
      unnötigen hohen Frameworkeinstellungen bin.

      Mfg vredesbyrD
      Es handelt sich dabei um ein einfache Steuerelement zum abgreifen von Mauspositionen. Es reichte fuer mein Anwendungsbereich nicht aus nur einfach die Cursorposition zu ermitteln, sondern war es viel mehr noetig dem Benutzer das ganze machen zu lassen: Er soll eine Position suchen und diese durch eine Mausinteraktion bestaetigen, nur darf man sich dann ja nicht vom Fleck bewegen - Was er aber tun wuerde wenn er in meinem Programm auf ein Button klicken muss. Dachte eigentlich das wird soweit ganz klar.
      sfmStatus @konzeption: 2%