das problem mit der maus und der minimierung

  • hallo zusammen,

    ein kleines Testprogramm um die Maus vordefiniert zu bewegen innerhalb eines festgelegten raums in der GUI. Es funktioniert so, dass wenn die Checkbox gecheckt wird, dann beginnt der Mauszeiger den vorgegebenen lauf. Dies kann dann unabhängig von dem Ort wo das Fenster ist gemacht werden und der Positionsablauf ist immer identisch. Super!

    leider ist dies nur solange gut, wie das fenster nicht minimiert wird. wird es minimiert, dann spingt der mauszeiger beim naechsten intervall an die linke obere ecke des bildschirms und bleibt dort ohne weiterhin seinen bewegungsablauf zu machen. ... was ich machen moechte: wenn ich das fenster bewege wird ja immer relativ zu der oberen linken ecke der GUI der abstand fuer den ablauf so berechnet, dass die relative position immer die gleiche ist zu der stelle wo sich die GUI befindet. ... nun wenn ich das program starte, dann bewege und dann minimiere moechte ich im prinzip, dass der mauszeiger an der stelle wo das fenster zuletzt war einfach weitermacht trotz minimiertem status. solange bis ich das GUI-fenster wieder hervorrufe um es zu stoppen oder zu schliessen. geht das?

    ein ansatz den ich versucht hatte, war mit einer funktion, aber die lief leider ins leere. hat vielleicht jemand eine zuendende idee hierzu?

    gruss und dank im voraus

    ConsoleWrite("=====================>>> "&"About Me:"&" <<<=====================" & @CRLF)
    ConsoleWrite("Someday I will know how to do it but that day is not today!" & @CRLF)
    ConsoleWrite("===================>>> "&"bankesbusters"&" <<<===================" & @CRLF)

    2 Mal editiert, zuletzt von SOLVE-SMART (31. Mai 2025 um 22:53) aus folgendem Grund: fehlerkorrektur

  • hallo,

    natuerlich funktioniert das program und tut genau was es soll:

    1) checkbox aktiviert und die maus bzw. der mauszeiger bewegt sich im vorgegebenen feld ... soweit so gut.

    2) bewegt man das programfenster an eine andere stelle waehrend es laeuft bewegt sich mauszeiger beim naechsten interval wieder im vorgegebenen feld ... soweit so gut.

    3) minimiere ich das program, dann springt der mauszeiger (bei mir) beim naechsten interval an die obere linke ecke meines bildschirms und bleibt da ... nicht so gut. = problem!

    wie gesagt. eigentlich moechte ich wenn das program laeuft, dass es im minimierten zustand an der zuletzt bekannten stelle wo sich das fenster befand weiter im interval sich bewegt. daran scheitere ich nach zahlreichen verschiedenen versuchen.

    praktischer nutzen? - damit der bildschirmschoner nicht angeht nach inaktivitaet von zeitraum 'x' oder oder oder ... letztenendes ist es einfach nur ein test und eine spielerei.

    gruss

    bankesbusters

    ConsoleWrite("=====================>>> "&"About Me:"&" <<<=====================" & @CRLF)
    ConsoleWrite("Someday I will know how to do it but that day is not today!" & @CRLF)
    ConsoleWrite("===================>>> "&"bankesbusters"&" <<<===================" & @CRLF)

  • 2 Mal editiert, zuletzt von SOLVE-SMART (31. Mai 2025 um 22:53)

  • meine Lösung:

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • hallo,

    das ist ja 'einfach' ich habe echt bestimmt 4 stunden experimentiert und bin nicht darauf gekommen. letztlich habt ihr beide argumentum und Schnuffel einen fast identischen code bzw. loesungsansatz unabhaengig von einander gehabt.

    Code
    If Not BitAND($iState, $WIN_STATE_MINIMIZED) Then
    	$windowPos = WinGetPos($Window)
    		If @error Then Return
    EndIf
    Local $windowX = $windowPos[0]
    Local $windowY = $windowPos[1]

    und

    Code
    If Not BitAND(WinGetState($Window), 16) Then
    	$windowX = WinGetPos($Window)[0]
    	$windowY = WinGetPos($Window)[1]

    ich waere glaube ich nie im leben darauf gekommen BitAND zu verwenden und wenn ich ehrlich bin, hatte ich vorher noch nie mit BitAND zu tun. echt toll wie einfach manchmal doch eine loesung ist. ich hatte es mit einer zweiten nachtraeglichen funktion versucht, aber alles schlug fehl und das endergebnis war immer das selbe. mauszeiger bei minimierung obere linke ecke und das war es. coole sache. ich danke euch zweien fuer die hilfe. das ist toll fuer einen betriebsrechner, der dann in der pause auf einen sperrbildschirmschoner wechselt bei dem man sich jedes mal wieder einloggen muss, denn so wird einfach die maus genug bewegt um einen wechsel in den sprerrbildschirmschoner verhindert mit ganz einfachen mitteln.

    danke vielmals

    gruss

    bankesbusters

    ConsoleWrite("=====================>>> "&"About Me:"&" <<<=====================" & @CRLF)
    ConsoleWrite("Someday I will know how to do it but that day is not today!" & @CRLF)
    ConsoleWrite("===================>>> "&"bankesbusters"&" <<<===================" & @CRLF)

  • aber es zeigt sich wieder einmal, das es für den Topic Ersteller besser wäre nach einer Lösung zu seinem Problem zu fragen, als sich selbst eine Lösung auszudenken und dann, ohne die ursächliche Problemstellung zu nennen, an diesem selbstgebauten Problem rumzudocktern.

    Um deinen Bildschirmschoner nicht aktiv werden zu lassen reichen vermutlich 3-4 Zeilen code.

    Eine GUI ist dabei nicht erforderlich. 😁

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Warum diesen nicht generell abschalten?
    Für mich hört sich das ganze so an, als würde hier versucht eine Art Kiosk-Modus zu generieren, ohne am OS erst mal an den richtigen Stellschrauben zu drehen.

  • meist haben die User keine Adminrechte. Daher gibt es ja Tools wie den „MouseMover“

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • hier mal eine kleine Spielerei ^^

    Shift-Alt-d zum starten/stoppen

    Shift-Alt-x zum Beenden

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Zugegeben: Ich habe nicht ganz verstanden ob die Mausbewegung wirklich unbedingt innerhalb eines GUI stattfinden soll oder doch nur allgemein der Anwesenheitssimulation dient.

    Wenn es darum geht den Bildschirmschoner oder Sleep zu verhindern, dann gibt es noch ein paar andere Methoden.
    Vor allem könnte ein Blick auf _WinAPI_SetThreadExecutionState() hier sicherlich interessant sein.
    Ich hatte mir vor einigen Zeiten mal ein ähnliches Skript gebastelt und bin da auf folgendes gekommen:

  • meist haben die User keine Adminrechte. Daher gibt es ja Tools wie den „MouseMover“

    Und dann dem von den Sysadmins vorgegebenen Settings zu umschiffen ist dann natürlich die Lösung... (nicht böse gemeint) Dann muss hier mit ihnen entsprechend kommuniziert werden und der PC an die Anforderungen angepasst werden.

  • Auto-magic

    lol, ich habe den Beitrag oben nicht gelesen ( AspirinJunkie 's ) :saint:

    2 Mal editiert, zuletzt von argumentum (2. Juni 2025 um 16:17)

  • auf meinem rechner habe ich die admin rechte, auf dem betriebsrechner habe ich auch die admin rechte. es geht auch nicht um die admin rechte. natuerlich habt ihr recht, wenn ihr alle sagt, dass es wahrscheinlich einfacher geht, aber mein ansatz sieht dabei noch nett aus, mit einer simplen kleinen GUI, die den mauszeiger mitnimmt und immer im vorgegebenen feld laufen laesst. da koennte man bestimmt noch erweiterungen schreiben, dass der mauszeiger gleichzeitig auch noch kleine bilder in das feld durch die bewegung 'malt'. sprich man denkt sich bewegungen aus, die zum beispiel ein haus, ein fahrrad, oder oder oder ergeben und laesst diese dann 'malen' und nach einem random prinzip abrufen. es soll ein nettes kleines (spassiges) tool sein.

    es muss nicht immer alles nach der simpelsten methode arbeiten. manchmal moechte man auch einfach nur etwas nettes machen was auch noch einen lustigen kleinen nebeneffekt hat. letztlich geht es zwar darum ein 'ich bin immer noch da' zu simulieren, aber auf eine nette art und weise.

    ich finde die anderen varianten auch sehr interessant und finde es auch nett, dass ihr euch zusaetzlich gedanken macht und weiss das sehr zu schaetzen. dadurch kann ich noch etwas lernen, was nie schaden kann. danke dafuer!

    bei diesem projekt ging es aber um die kontrolle von der maus in bezug auf die GUI (sprich das mausfeld in der gui) und dem wunsch das die maus im mausfeld ihre runden zieht, ganz gleich wo die GUI ist und dem wunsch das wenn ich die gui nach ganz rechts, oder links, oder oben, oder unten verschiebe, dass die maus in der zuletzt bekannten position einfach trotz einer minimierung weiterlaeuft. so stoert die GUI nicht, aber man erkennt, dass das program noch laeuft. ... wie gesagt, man koennte da dann noch bestimmt im mausfeld tolle dinge machen um das ganze dann noch auf eine weise mit mehr als nur eine stumpfsinnige bewegung zu befuellen.

    also nicht immer verbal mit der kelle zuschlagen, nur weil man nicht genau weiss was der sinn dahinter ist.

    ConsoleWrite("=====================>>> "&"About Me:"&" <<<=====================" & @CRLF)
    ConsoleWrite("Someday I will know how to do it but that day is not today!" & @CRLF)
    ConsoleWrite("===================>>> "&"bankesbusters"&" <<<===================" & @CRLF)

  • ich wollte dir nicht zu Nahe treten, aber nach zig Jahren hier im Forum ist es nunmal so, dass in der Regel nicht das eigentliche Problem benannt wird, sondern das Problem der eigenen Lösungsfindung. Wenn das bei dir nicht der Fall ist, dann entschuldige ich mich gern. ☺️

    Freut mich wenn wir helfen konnten und lass dich nicht von mir entmutigen 😉

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • aber man erkennt, dass das program noch laeuft

    Hmm, da denke ich eher an den Balken, der in der Taskleiste im Titel z.B. bei Downloads im Browser durchläuft.
    Zugegeben, ich weiß gerade nicht, wie man das umsetzt aber fände ich die wesentlich sinnvollere Variante, da man den Mauszeiger nicht anfässt.

    Taskbar progressbar (windows 7)
    Hi everyone Someone knows who do I display the progress bar in the taskbar?example:I don't know how to use this code (I me newbie here):…
    www.autoitscript.com

    also nicht immer verbal mit der kelle zuschlagen, nur weil man nicht genau weiss was der sinn dahinter ist.

    Ich fühle mich dabei mal nicht angesprochen, denn wie Schnuffel es bereits gesagt hat, oft liegen Welten zwischen dem was hier angefragt wird und dem eigentlichen "Problem".