Mauszeiger im Leerlauf unsichtbar machen

4795
Joseph

Gibt es eine Möglichkeit, den Mauszeiger verschwinden zu lassen, wenn der Computer inaktiv ist? Wenn die Lösung sowohl unter Windows XP als auch unter Windows 7 funktionieren könnte, wäre das großartig.

6

4 Antworten auf die Frage

5
Joseph

Basierend auf dem, was ich hier gefunden habe, konnte ich folgenden AutoHotkey- Code erstellen:

SystemCursor("Init")  SetTimer, CheckIdle, 250 return  CheckIdle: TimeIdle := A_TimeIdlePhysical // 1000 if TimeIdle >= 3 { SystemCursor("Off") } else { SystemCursor("On") } return  #Persistent OnExit, ShowCursor ; Ensure the cursor is made visible when the script exits. return  ShowCursor: SystemCursor("On") ExitApp  SystemCursor(OnOff=1) ; INIT = "I","Init"; OFF = 0,"Off"; TOGGLE = -1,"T","Toggle"; ON = others { static AndMask, XorMask, $, h_cursor ,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 ; system cursors, b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13 ; blank cursors, h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13 ; handles of default cursors if (OnOff = "Init" or OnOff = "I" or $ = "") ; init when requested or at first call { $ = h ; active default cursors VarSetCapacity( h_cursor,4444, 1 ) VarSetCapacity( AndMask, 32*4, 0xFF ) VarSetCapacity( XorMask, 32*4, 0 ) system_cursors = 32512,32513,32514,32515,32516,32642,32643,32644,32645,32646,32648,32649,32650 StringSplit c, system_cursors, `, Loop %c0% { h_cursor := DllCall( "LoadCursor", "uint",0, "uint",c%A_Index% ) h%A_Index% := DllCall( "CopyImage", "uint",h_cursor, "uint",2, "int",0, "int",0, "uint",0 ) b%A_Index% := DllCall("CreateCursor","uint",0, "int",0, "int",0, "int",32, "int",32, "uint",&AndMask, "uint",&XorMask ) } } if (OnOff = 0 or OnOff = "Off" or $ = "h" and (OnOff < 0 or OnOff = "Toggle" or OnOff = "T")) $ = b ; use blank cursors else $ = h ; use the saved cursors  Loop %c0% { h_cursor := DllCall( "CopyImage", "uint",%$%%A_Index%, "uint",2, "int",0, "int",0, "uint",0 ) DllCall( "SetSystemCursor", "uint",h_cursor, "uint",c%A_Index% ) } } 
1
ricbax

Versuchen Sie folgendes: Cursor Hider

Das ist es, wonach ich suche, aber 20 Dollar scheinen ein bisschen viel zu sein. Joseph vor 15 Jahren 1
1
sYnfo

Wenn Sie nichts dagegen haben, dass möglicherweise nur eine kleine Codierung erforderlich ist, können Sie AutoHotkey verwenden . In diesem Forenbeitrag finden Sie weitere Informationen, was Sie erreichen möchten.

Der Post, mit dem Sie verlinkt haben, macht die Maus in der erstellten AutoHotkey-Anwendung nur unsichtbar. Du hast mich aber auf die richtige Spur gebracht, also gebe ich dir eine positive Meinung. Vielen Dank. Joseph vor 15 Jahren 0
1
micnolmad

8 Jahre später ist Josephs Antwort immer noch gut und funktioniert in AHK! ABER ich habe es noch besser gemacht .. meiner Meinung nach der Sache.

Ich habe einen Mauscheck hinzugefügt, sodass der Cursor erst wieder angezeigt wird, wenn er verschoben wird. Es stimmt zwar, dass ich andere Mausereignisse wie Klicks hinzufügen konnte, aber da der Cursor verborgen ist, denke ich, dass es zu umständlich ist. Sie können es selbst hinzufügen, wenn Sie es wollen :)

Was ich geändert habe, war #Persistentnach oben zu verschieben, da es global ist und für das gesamte Skript vorhanden ist, egal, was es ist.

Hinzugefügt CoordMode, Mouse, Screenund MouseGetPos, ix, iyim Autoexec-Bereich und MouseGetPos, ix, iyerneut, wenn Sie in den Leerlauf gehen. MouseGetPos, cx, cywird auf jeden gesetzt CheckIdleund die Variablen werden bei Mausbewegung mit verglichen if (cx != ix or cy != iy).

#Persistent  CoordMode, Mouse, Screen MouseGetPos, ix, iy  SystemCursor("Init")  SetTimer, CheckIdle, 250 return  CheckIdle: MouseGetPos, cx, cy TimeIdle := A_TimeIdlePhysical // 1000 if (TimeIdle >= 3) { MouseGetPos, ix, iy SystemCursor("Off") } else if (cx != ix or cy != iy) { SystemCursor("On") } return  OnExit, ShowCursor ; Ensure the cursor is made visible when the script exits. return  ShowCursor: SystemCursor("On") ExitApp  SystemCursor(OnOff=1) ; INIT = "I","Init"; OFF = 0,"Off"; TOGGLE = -1,"T","Toggle"; ON = others { static AndMask, XorMask, $, h_cursor ,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 ; system cursors, b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13 ; blank cursors, h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13 ; handles of default cursors if (OnOff = "Init" or OnOff = "I" or $ = "") ; init when requested or at first call { $ = h ; active default cursors VarSetCapacity( h_cursor,4444, 1 ) VarSetCapacity( AndMask, 32*4, 0xFF ) VarSetCapacity( XorMask, 32*4, 0 ) system_cursors = 32512,32513,32514,32515,32516,32642,32643,32644,32645,32646,32648,32649,32650 StringSplit c, system_cursors, `, Loop %c0% { h_cursor := DllCall( "LoadCursor", "uint",0, "uint",c%A_Index% ) h%A_Index% := DllCall( "CopyImage", "uint",h_cursor, "uint",2, "int",0, "int",0, "uint",0 ) b%A_Index% := DllCall("CreateCursor","uint",0, "int",0, "int",0, "int",32, "int",32, "uint",&AndMask, "uint",&XorMask ) } } if (OnOff = 0 or OnOff = "Off" or $ = "h" and (OnOff < 0 or OnOff = "Toggle" or OnOff = "T")) $ = b ; use blank cursors else $ = h ; use the saved cursors  Loop %c0% { h_cursor := DllCall( "CopyImage", "uint",%$%%A_Index%, "uint",2, "int",0, "int",0, "uint",0 ) DllCall( "SetSystemCursor", "uint",h_cursor, "uint",c%A_Index% ) } }