Como você adiciona um efeito visual a um clique do mouse no Windows?

22

Eu só quero um pequeno utilitário que monitore os cliques do mouse para que, quando ocorrer um efeito visual de bolha (ou algo semelhante), semelhante a algo que você possa ver em um screencast.

Jon Erickson
fonte

Respostas:

21

Opção nativa do Windows

Propriedades do mouse> Opções do ponteiro> Mostrar local do ponteiro

Combinado com AutoHotkey

~LButton::
Send {Ctrl}
return

~LButton UP::
Send {Ctrl}
return

Cada clique do mouse (para cima e para baixo) dispara Ctrlbrevemente.

Conforme apontado por Paolo, você pode até alterar a configuração do Mouse como parte do 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
fonte
11
Corrigi a sugestão aqui (e obrigado por me colocar no AutoHotKey). Levei horas para descobrir a correção. Adicionei um único caractere (o til ~) que permitia a operação normal do mouse. Também modifiquei o exemplo para que não apenas a liberação do clique do mouse, mas também o clique inicial do mouse gere o efeito.
11
É possível alterar automaticamente as configurações do mouse. Veja este link: autohotkey.com/board/topic/…
Paolo Fulgoni
A alteração que fiz foi remover o ~ LButton e usar apenas o ~ LButton Up, porque ter ambos cria um efeito de sonar desconectado, mas usar apenas o clique para cima o torna perfeito.
Julgador 30/01
1

Esta é uma variante da resposta da RJFalconer, incorporando mudanças de Paolo Fulgoni. Eu não queria sempre ver meu mouse quando o botão CTRL era pressionado, e esperava que a DllInfomodificação ligasse e desligasse dinamicamente a configuração, mas não consegui fazê-la funcionar (o script acabava de sair). Sem dúvida, alguém mais sofisticado no AHK poderia explicar o que estava fazendo de errado, mas fui em frente e criei minha própria versão.

Liga dinamicamente a opção "Mostrar mouse quando o controle é pressionado" ON quando o botão do mouse é pressionado e, em seguida, desliga-o depois. Funciona bem em testes limitados, embora algumas vezes o ponteiro do mouse desapareça depois. Se alguém souber como corrigi-lo ou tiver outras melhorias, sinta-se à vontade para entrar.

Está (excessivamente) documentado, porque esqueço rapidamente as coisas e, quando preciso revisitar, gosto de fazer com que meus scripts forneçam informações suficientes para que eu não precise pesquisar para encontrar todas as referências antigas que usei em primeiro lugar.

;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
fonte
Foi útil, obrigado. Também adicionei #SingleInstance forcelinha para evitar mensagens pop-up irritantes durante cliques duplos.
Phil B