Eine Form "invisible machen" aber die MouseEvents beibehalten

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Pascalony.

    Eine Form "invisible machen" aber die MouseEvents beibehalten

    Hi,

    ich habe folgende Frage:

    Ist es möglich eine Form "unsichtbar" zu machen, jedoch sollen Mouse-Events dennoch funktionieren?

    Ich würde also gerne das Programm starten, beispielsweise einen Button drücken und die Form wird unsichtbar.
    Jetzt klicke ich im Texteditor von Windows zum Beispiel die linke Maustaste und die Maus bewegt sich in dem Moment um Y nach unten.



    Bin für jede Hilfe sehr Dankbar.

    LG

    Winforms ist nicht WPF. Bitte benutz die richtigen Unterforen. Das erhöht auch deine Chancen die richtigen antworten zu erhalten. Verschoben. ~fufu

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „fufu“ ()

    paanaa schrieb:

    Jetzt klicke ich im Texteditor von Windows zum Beispiel die linke Maustaste und die Maus bewegt sich in dem Moment um Y nach unten.

    äääääh was? Bittte erkläre das genauer.

    Prinzipiell musst du die Globalen Mouse-Events auslesen. Dann kannst du die Form einfach verstecken (.Hide) und auf die Events reagieren.
    stackoverflow.com/questions/11…lobal-mouse-event-handler
    codeproject.com/Articles/7294/…e-and-Keyboard-Hooks-in-C
    etc. etc. etc. Einfach googeln.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Folgendes Problem:
    ich habe mich mit der Klasse von der Seite die du geposted hast außeinandergesetzt codeproject.com/Articles/7294/…e-and-Keyboard-Hooks-in-C

    Es wird hierbei nur die Aktivität angezeigt, wenn eine Maus gedrückt wird. Also ein Linksklick wird aufgezeichnet, sobald man klickt.
    Allerdings benötige ich eine Funktion, bei der ich auch anzeigen lassen kann, wie lange eine Maustaste gedrückt wird. Also nicht nur, ob eine Maustaste betätigt wurde.

    Hat jemand eine Idee?


    LG
    Einfach googeln.
    codeproject.com/Articles/19858/Global-Windows-Hooks

    Edit:// oder: stackoverflow.com/questions/33…ackground/3312799#3312799

    Das sollte dir alle Events bieten. (Das habe ich auf die Schnelle herausgelesen).
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    1. Das hattest Du wohl vergessen, im Eingangspost zu schreiben.
    2. Nein, da Du durch die richtigen EventHandler festlegen kannst, was passiert, wenn ein MouseButton gedrückt wird und was passiert, wenn ein MouseButton losgelassen wird. In dem einen EreignisHandler startest Du ne Zeiterfassung, in dem anderen stoppst Du sie.
    3.

    Gather schrieb:

    äääääh was? Bittte erkläre das genauer.
    Das ist noch unbeantwortet, denn
    4.

    paanaa schrieb:

    Jetzt klicke ich im Texteditor von Windows zum Beispiel die linke Maustaste und die Maus bewegt sich in dem Moment um Y nach unten.
    Was soll das bitte werden, wenn's fertig ist? Das klingt irgendwie verdächtig ...
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Erstmal Danke für eure Antworten.

    Ich möchte ein Programm schreiben, das bei einem MouseEvent wie z.B. Linke Maustaste gedrückt halten, beispielsweise die Maus nach oben zieht. Das ganze außerhalb der Form.

    Mithilfe der von Gather geposteten Klasse, ist es mir gelungen das fast vollständig umzusetzen. Das Problem ist, dass ich nicht sehen kann, wie lange denn eine Maustaste gedrückt gehalten wird.

    Hier mal ein Code Beispiel:

    C#-Quellcode

    1. public void MouseMoved(object sender, MouseEventArgs e)
    2. {
    3. if (e.Button == MouseButtons.Left )
    4. {
    5. gedrückt = true;
    6. }
    7. while (gedrückt == true)
    8. {
    9. int y = Cursor.Position.Y;
    10. int x = Cursor.Position.X;
    11. Cursor.Position = new Point(Cursor.Position.X, Cursor.Position.Y + 15);
    12. System.Threading.Thread.Sleep(25);
    13. }
    14. }
    MouseDown und MouseUp ist aber soviel ich weiß nicht möglich außerhalb einer Form oder liege ich da falsch?

    Nein wird kein Mouselogger:D
    Ein einfaches Tool für ein Shooter, das den Rückstoß ein wenig reduzieren soll.

    Ich weiß, es wäre einfacher das mit AutoHotKey zu schreiben, aber ich wollte es mal in C# testen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „fufu“ ()

    paanaa schrieb:

    oder liege ich da falsch?

    Wenn du dir meine Links aus dem zweiten Post ansiehst bist du schlauer.

    paanaa schrieb:

    Tool für ein Shooter, das den Rückstoß ein wenig reduzieren soll.

    Kann gut sein, dass dies nicht erlaubt ist. Und du einen Ban kassierst, aber wenn du dir dem bewusst bist..
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Danke, ich habe die beiden Bibliotheken eingebunden, komme aber gar nicht klar damit.
    codeproject.com/Articles/7294/…e-and-Keyboard-Hooks-in-C hier hat es mit der Version 1 wunderbar funktioniert, allerdings gibt es da keine MouseDown/Up Funktion.

    Vollständige Beiträge zu zitieren ist sinnlos. Erstrecht wenn es sich um den Beitrag unmittelbar vor dem eigenen handelt. Das verschlechtert den Lesefluss. Editiert. ~fufu

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „fufu“ ()

    Ich will jetzt nicht so negativ klingen, aber was für ein Shooter soll das denn werden, wenn du schon an sowas hängst? Dazu kommt, dass die Umsetzung die Maus einfach nach oben zu bewegen nicht eine optimale Lösung ist um Rückstoß zu realisieren. Für die Dauer des Mouseclicks guckst du hier: https://msdn.microsoft.com/de-de/library/system.diagnostics.stopwatch(v=vs.110).aspx

    Edit:

    C#-Quellcode

    1. System.Threading.Thread.Sleep(25);
    wird deine Form einfach nur freezen, das Spiel wird niemals flüssig weiterlaufen, sondern für 25ms hängen.