Mova o ponteiro do mouse para a área de digitação

3

O Windows contém configurações para ocultar o ponteiro do mouse durante a digitação, mas não contém configurações para mover o ponteiro para a área de digitação ativa. Quer dizer, posso mudar as áreas de digitação por tab, ou enter, ou alt + tab, etc., mas meu ponteiro ainda está longe. O que devo usar (programa, script, script autohotkey) para fazer um comportamento semelhante em todo o sistema?

    
por Georgy Grigoryev 10.02.2016 / 08:57

2 respostas

1

O AutoHotkey permite que você atribua uma tecla de atalho para mover o mouse para a localização atual do cursor, se é isso que você procura.

#a::                             ; shortcut key is <Win>+a
    CoordMode, Caret, Screen     ; set Caret to use Screen Coordinates
    CoordMode, Mouse, Screen     ; set Mouse to use Screen Coordinates
    MouseMove, %A_CaretX%, %A_CaretY%   ; move mouse to caret position
return

Você também pode atribuir o script para ser executado após certos eventos em que você sabe que o foco do cursor será alterado

~!Tab Up::
    keywait, Alt ; wait for user to let off alt key after activation
    sleep 200    ; give the selected program time to activate
    gosub #a     ; move the mouse
return
    
por 11.02.2016 / 05:57
0

Para fazer isso, você precisa usar um DllCall para obter a posição real do cursor. O seguinte funciona para mim em todos os lugares que testei (incluindo o MS Word, que não funciona com A_CaretX / Y).

#s:: ;assign hotkey to win + s
; https://msdn.microsoft.com/en-us/library/windows/desktop/ms632604(v=vs.85).aspx
VarSetCapacity(GuiThreadInfo, 48) ;create "struct"
NumPut(48, GuiThreadInfo,,"UInt") ;update cbSize member

; https://msdn.microsoft.com/en-us/library/windows/desktop/ms633506(v=vs.85).aspx
DllCall("GetGUIThreadInfo", int, 0, ptr, &GuiThreadInfo)

hwnd := NumGet(&GuiThreadInfo+7*4) ;get 7th member of struct
left := NumGet(&GuiThreadInfo+8*4) ;8th member
top  := NumGet(&GuiThreadInfo+9*4) ;9th

ControlGetPos, x, y,,,,ahk_id %hwnd% ;get position of active control, relative to window
MouseMove, left+x, top+y
return
    
por 04.03.2016 / 22:29