Comment ajouter un effet visuel à un clic de souris à partir de Windows?

22

Je veux juste un petit utilitaire qui surveille les clics de souris afin que lorsque l'un se produit un effet de bulle visuelle (ou quelque chose de similaire) se produit, similaire à quelque chose que vous pourriez voir dans un screencast.

Jon Erickson
la source

Réponses:

21

Option Windows native

Propriétés de la souris> Options du pointeur> Afficher l'emplacement du pointeur

Combiné avec AutoHotkey

~LButton::
Send {Ctrl}
return

~LButton UP::
Send {Ctrl}
return

Chaque clic de souris (bas et haut) déclenche Ctrlbrièvement.

Comme l'a souligné Paolo, vous pouvez même modifier le paramètre de la souris dans le cadre du script:

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
la source
1
J'ai corrigé la suggestion ici (et merci de m'avoir mis sur AutoHotKey). Il m'a fallu des heures pour trouver le correctif. J'ai ajouté un seul caractère (le tilde ~) qui a permis au fonctionnement normal de la souris de passer. J'ai également modifié l'exemple afin que non seulement une version de clic de souris, mais aussi le clic de souris initial génère l'effet.
1
Il est possible de modifier automatiquement les paramètres de la souris. Voir ce lien: autohotkey.com/board/topic/…
Paolo Fulgoni
Le changement que j'ai fait a été de supprimer ~ LButton et d'utiliser uniquement ~ LButton Up, car avoir les deux crée un effet de sonar disjoint, mais en utilisant uniquement le clic vers le haut, cela fonctionne parfaitement.
Trialsman
1

Ceci est une variante de la réponse de RJFalconer, incorporant les changements de Paolo Fulgoni. Je ne voulais pas toujours voir ma souris lorsque le bouton CTRL était enfoncé, et j'espérais que la DllInfomodification activerait et désactiverait dynamiquement le paramètre, mais je ne pouvais pas le faire fonctionner (le script se terminait juste). Sans doute, quelqu'un de plus sophistiqué dans AHK pourrait expliquer ce que je faisais de mal, mais j'ai continué et créé ma propre version.

Il active de manière dynamique l'option «Afficher la souris lorsque la commande est enfoncée» lorsque le bouton de la souris est enfoncé, puis la désactive ensuite. Cela fonctionne bien dans des tests limités, bien que parfois le pointeur de la souris disparaisse à l'avenir. Si quelqu'un sait comment le réparer ou a d'autres améliorations, n'hésitez pas à intervenir.

C'est (excessivement) documenté, parce que j'oublie rapidement les choses, et quand j'ai besoin de revisiter, j'aime que mes scripts fournissent suffisamment d'informations que je n'ai pas besoin de rechercher pour trouver toutes les anciennes références que j'ai utilisées en premier lieu.

;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
}
bac
la source
C'était utile merci. J'ai également ajouté une #SingleInstance forceligne pour éviter les messages contextuels gênants lors des doubles clics.
Phil B