Перемістіть курсор миші на область введення


3

Windows містить налаштування для приховування вказівника миші під час набору тексту, але не містить налаштувань для переміщення вказівника на активну область введення тексту. Я маю на увазі, що я можу переключити введення областей за вкладками, або ввести, або alt + вкладку тощо, але мій вказівник ще далеко. Що мені слід використовувати (програма, скрипт, сценарій автоматичної клавіші), щоб зробити подібну загальносистемну поведінку?

Відповіді:


1

AutoHotkey дозволить вам призначити клавішу швидкого доступу для переміщення миші на поточне місце курсору, якщо саме це ви хочете.

#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

Ви також можете призначити запуск сценарію після певних подій, коли ви знаєте, що фокус курсора зміниться

~!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

він не працює у візуальній студії, піднесеному тексті. Чи є у вас ідеї, як ми можемо адаптувати це для вирішення цього питання?
Георгій Григор’єв

0

Для цього вам потрібно скористатися DllCall, щоб отримати справжню позицію каретки. Наступні роботи для мене є скрізь, де я його перевіряв (включаючи MS Word, який не працює з 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

Не працює у win10
Георгій Григор'єв

@GeorgyGrigoryev Це робить тут! У вас працює 64 біт або 32 біт? З якими програмами ви спеціально спробували це? Ви мали помилки? Що відбувається, коли ви натискаєте Win + S за допомогою цього сценарію? Яку версію AHK ви використовували для її запуску?
Спляча

Гм, я спробував це з деякими різними програмами - виявляється, це працює в тих же місцях, що й A_CaretX / Y, я думав, що вони не працюють з MS Word, де я тестував цей скрипт ... повертаємось до таблиці малювання!
Спляча

Так, правильно, та ж поведінка, що і CarretX / Y, і я зупинився на цьому рішенні.
Георгій Григор’єв
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.