2017-01-11 2 views
1

Я хочу создать несколько подсказок, которые самосвалы информации о окне на основе MouseGetPos:Toggling упорной подсказки

  1. ^Space = Контекстный будет включаться и выключаться, и следую за мышью
  2. ^+Space = всплывающую подсказку появляется временно, а затем исчезает
  3. ^!+Space = Контекстное переключается и появляется в нижнем левом углу экрана

Однако всплывающая подсказка не исчезает для 1 & 2. 3 Дает ошибку «действие не определено».

Вот мой текущий код:

#CommentFlag // 
Toggle := False 

^Space:: // Toggle the tooltip and follow the mouse 

    If (Toggle = False) { 

     Toggle := True 
     #Persistent 
     SetTimer, WatchCursor // If I have just 'WatchCursor', without '#Persistent' and 'SetTimer', I get an "Action not defined" error 

    } Else If (Toggle = True) { 

     Toggle := False 
     ToolTip 

    } 
Return 

^+Space:: // Tooltip follows mouse, but disappears after 1 second 

    #Persistent 
    SetTimer, WatchCursor, 1000 

Return 

^!+Space:: // Tooltip appears at 1511, 3010 

    #Persistent 
    WatchCursor2 // Error: This line does not contain a recognized action 

Return 

WatchCursor: 
MouseGetPos, x, y, id, control 
WinGetTitle, title, ahk_id %id% 
WinGetClass, class, ahk_id %id% 
ToolTip, -- Window Info --`n`tahk_id:`t%id%`n`tahk_class:`t%class%`n`tTitle:`t%title%`n`tControl:`t%control%`n`n-- Mouse Pos --`n`tX:`t%x%`n`tY:`t%y% 

WatchCursor2: 
MouseGetPos, x, y, id, control 
WinGetTitle, title, ahk_id %id% 
WinGetClass, class, ahk_id %id% 
ToolTip, -- Window Info --`n`tahk_id:`t%id%`n`tahk_class:`t%class%`n`tTitle:`t%title%`n`tControl:`t%control%`n`n-- Mouse Pos --`n`tX:`t%x%`n`tY:`t%y%,1511,3010 
+0

Чтобы перейти на ярлык, вам нужно «перейти». – wOxxOm

+0

Теперь я понимаю, что могу получить большую часть этой информации с помощью Window Spy в редакторе сценариев [SciTE4AutoHotKey] (http://fincs.ahk4.net/scite4ahk/). Тем не менее, я все равно хотел бы понять, как переключать постоянную всплывающую подсказку. –

+1

Я думаю, что @wOxxOm означает [GoSub] (https://autohotkey.com/docs/commands/Gosub.htm) для вызова метки/подпрограммы один раз. Это решит проблему неопределенного действия. Кроме того, каждая подпрограмма должна быть завершена с помощью 'return'. В вашем коде каждый вызов 'WatchCursor' впоследствии вызывает' WatchCursor2' из-за отсутствия возврата. Я не думаю, что это то, что ты хочешь. – MCL

ответ

1

AutoHotkey сценарий ниже, должен дать вам точную функциональность вам требуется. Я внесла некоторые поправки и комментарии, , которые должны объяснить возникшие проблемы.

#CommentFlag // 
// #Persistent is not necessary for this script, 
// the presence of at least one hotkey, 
// is one way to make a script persistent 

Toggle := False 

// #p::Pause 

^Space:: // Toggle the tooltip and follow the mouse 

    If (Toggle = False) { 

     Toggle := True 
     vTickCount1 := A_TickCount 
     SetTimer, WatchCursor 

    } Else If (Toggle = True) { 

     Toggle := False 
     SetTimer, WatchCursor, Off 
     // ToolTip 

    } 

Return 

^+Space:: // Tooltip follows mouse, but disappears after 1 second 

    SetTimer, WatchCursor1, -1000 // negative to run once and then stop 
    MouseGetPos, x, y, id, control 
    WinGetTitle, title, ahk_id %id% 
    WinGetClass, class, ahk_id %id% 
    ToolTip, -- Window Info --`n`tahk_id:`t%id%`n`tahk_class:`t%class%`n`tTitle:`t%title%`n`tControl:`t%control%`n`n-- Mouse Pos --`n`tX:`t%x%`n`tY:`t%y% 

Return 

^!+Space:: // Tooltip appears at 1511, 3010 

Gosub WatchCursor2 

Return 

WatchCursor1: 
ToolTip 
Return 

WatchCursor: 
MouseGetPos, x, y, id, control 
WinGetTitle, title, ahk_id %id% 
WinGetClass, class, ahk_id %id% 
ToolTip, -- Window Info --`n`tahk_id:`t%id%`n`tahk_class:`t%class%`n`tTitle:`t%title%`n`tControl:`t%control%`n`n-- Mouse Pos --`n`tX:`t%x%`n`tY:`t%y% 

// if (A_TickCount - vTickCount1 > 5000) 
// { 
// SetTimer, WatchCursor, Off 
// ToolTip 
// } 
Return // without this line the lines below in WatchCursor2 will also be triggered 

WatchCursor2: 
MouseGetPos, x, y, id, control 
WinGetTitle, title, ahk_id %id% 
WinGetClass, class, ahk_id %id% 
ToolTip, -- Window Info --`n`tahk_id:`t%id%`n`tahk_class:`t%class%`n`tTitle:`t%title%`n`tControl:`t%control%`n`n-- Mouse Pos --`n`tX:`t%x%`n`tY:`t%y%,1511,3010 
Return 

Примечание: Это был довольно приятный сценарий и приятный для работы.
Примечание: AccViewer AutoHotkey - очень полезный скрипт для извлечения информации о окнах и элементах управления, iWB2 Learner также полезен для получения информации о веб-элементах в Internet Explorer.

+0

Я ценю ваш ответ. Ваш код решает много проблем, с которыми я столкнулся, и за это я благодарен. Тем не менее, это не относится к моему основному вопросу. * Можно ли переключать постоянную подсказку? * Вместо этого он заменяет постоянство таймером: 'if (A_TickCount - vTickCount1> 5000) SetTimer, WatchCursor, Off' Это не разрешает Ctrl + Пробел чтобы по-настоящему переключиться. –

+0

ОК, я думаю, что исправил это для вас сейчас, в своем втором ответе, который я только что добавил. Спасибо за ответ. – vafylec

+0

Вам не нужно публиковать второй ответ, просто отредактируйте свой первый. –