Wie fügt man einem Mausklick in Windows einen visuellen Effekt hinzu?

22

Ich möchte nur ein kleines Hilfsprogramm, das Mausklicks überwacht, damit beim Auftreten eines solchen ein visueller Blaseneffekt (oder ähnliches) auftritt, ähnlich wie bei einem Screencast.

Jon Erickson
quelle

Antworten:

21

Native Windows-Option

Mauseigenschaften> Zeigeroptionen> Zeigerposition anzeigen

Kombiniert mit AutoHotkey

~LButton::
Send {Ctrl}
return

~LButton UP::
Send {Ctrl}
return

Jeder Mausklick (runter & rauf) löst Ctrlkurz aus.

Wie von Paolo hervorgehoben, können Sie die Mauseinstellung sogar als Teil des Skripts ändern:

DllCall("SystemParametersInfo", UInt, 0x101D, UInt, 0, UInt, 1, UInt, 0) ;SPI_SETMOUSESONAR ON

OnExit, ExitSub
ExitSub:
   DllCall("SystemParametersInfo", UInt, 0x101D, UInt, 0, UInt, 0, UInt, 0) ;SPI_SETMOUSESONAR OFF
   ExitApp
RJFalconer
quelle
1
Ich habe den Vorschlag hier behoben (und danke, dass Sie mich auf AutoHotKey gesetzt haben). Ich habe Stunden gebraucht, um das Problem zu lösen. Ich habe ein einzelnes Zeichen (die Tilde ~) hinzugefügt , das den normalen Betrieb der Maus ermöglicht. Ich habe das Beispiel auch so modifiziert, dass nicht nur eine Mausklickfreigabe, sondern auch der anfängliche Mausklick den Effekt erzeugt.
1
Es ist möglich, die Mauseinstellungen automatisch zu ändern. Siehe diesen Link: autohotkey.com/board/topic/…
Paolo Fulgoni
Die Änderung, die ich vorgenommen habe, war, ~ LButton zu entfernen und nur ~ LButton Up zu verwenden, da beide einen unzusammenhängenden Sonareffekt erzeugen, aber nur mit dem Aufwärtsklick funktioniert es perfekt.
Trialsman
1

Dies ist eine Variante der Antwort von RJFalconer, die Änderungen von Paolo Fulgoni enthält. Ich wollte nicht immer meine Maus sehen, wenn die STRG-Taste gedrückt wurde, und ich hoffte, dass die DllInfoÄnderung die Einstellung dynamisch ein- und ausschalten würde, aber ich konnte sie nicht zum Laufen bringen (das Skript wurde einfach beendet). Zweifellos konnte jemand, der in der AHK etwas anspruchsvoller ist, erklären, was ich falsch gemacht habe, aber ich habe meine eigene Version erstellt.

Es schaltet die Option "Maus anzeigen, wenn die Steuerung gedrückt wird" dynamisch ein, wenn die Maustaste gedrückt wird, und schaltet sie anschließend aus. In eingeschränkten Tests funktioniert es einwandfrei, obwohl der Mauszeiger manchmal nach hinten verschwindet. Wenn jemand weiß, wie man das Problem behebt, oder andere Verbesserungen hat, kann er gerne mitmachen.

Es ist (übermäßig) dokumentiert, weil ich Dinge schnell vergesse und wenn ich noch einmal darüber nachdenken muss, möchte ich, dass meine Skripte genügend Informationen enthalten, die ich nicht durchsuchen muss, um alle alten Referenzen zu finden, die ich ursprünglich verwendet habe.

;Visualize mouse clicks by showing radiating concentric circles on mouse click
;Author: traycerb
;Date/Version: 01-31-2018
;
;Source:
;/superuser/106815/how-do-you-add-a-visual-effect-to-a-mouse-click-from-within-windows
;https://autohotkey.com/board/topic/77380-mouse-click-special-effects-for-presentationsdemos/

;Dynamically switch on the Windows accessibility feature to show the mouse when the control key is pressed
;when the script is executed, then switch off afterwards
;Windows settings > Mouse > Pointer Options tab > Visibility group > Show location of pointer when I press CTRL key



;Window's SystemParametersInfo function, retrieves or sets the value of one of the 
;system-wide parameters.  AHK DllCall fxn with SystemParameterInfo parameter is used to access
;this Windows API.
;https://msdn.microsoft.com/en-us/library/windows/desktop/ms724947(v=vs.85).aspx
;BOOL WINAPI SystemParametersInfo(
;  _In_    UINT  uiAction,
;  _In_    UINT  uiParam,
;  _Inout_ PVOID pvParam,
;  _In_    UINT  fWinIni
;);

;uiParam [in]
;Type: UINT
;
;A parameter whose usage and format depends on the system parameter being queried or set. 
;For more information about system-wide parameters, see the uiAction parameter. 
;If not otherwise indicated, you must specify zero for this parameter.

;pvParam [in, out]
;Type: PVOID
;
;A parameter whose usage and format depends on the system parameter being queried or set. 
;For more information about system-wide parameters, see the uiAction parameter. 
;If not otherwise indicated, you must specify NULL for this parameter. 
;For information on the PVOID datatype, see Windows Data Types.

;fWinIni [in]
;Type: UINT
;
;If a system parameter is being set, specifies whether the user profile is to be updated, 
;and if so, whether the WM_SETTINGCHANGE message is to be broadcast to all top-level 
;windows to notify them of the change.

;This parameter can be zero if you do not want to update the user profile 
;or broadcast the WM_SETTINGCHANGE message or it can be set to the following [...]

;Accessibility parameter    
;S0x101D PI_SETMOUSESONAR
;Turns the Sonar accessibility feature on or off. This feature briefly 
;shows several concentric circles around the mouse pointer when the user 
;presses and releases the CTRL key. 
;The pvParam parameter specifies TRUE for on and FALSE for off. 

;Press the control button each time mouse button is pressed, showing location of mouse pointer.
~LButton::
{
  DllCall("user32\SystemParametersInfo", UInt, 0x101D, UInt, 0, UInt, 1, UInt, 0) 
  Send {Ctrl}
  DllCall("user32\SystemParametersInfo", UInt, 0x101D, UInt, 0, UInt, 0, UInt, 0) 
  return
}

~RButton::
{
  DllCall("user32\SystemParametersInfo", UInt, 0x101D, UInt, 0, UInt, 1, UInt, 0) 
  Send {Ctrl}
  DllCall("user32\SystemParametersInfo", UInt, 0x101D, UInt, 0, UInt, 0, UInt, 0) 
  return
}
Traycerb
quelle
Es war nützlich, danke. Ich habe auch eine #SingleInstance forceZeile hinzugefügt , um störende Popup-Meldungen bei Doppelklicks zu vermeiden.
Phil B