Тоже иногда Notepad++ пользуюсь, у меня так вышло:
#IfWinActive ahk_class Notepad++
$F8:: WinExist("ahk_class Notepad++"), SwitchAreaInNotepad()
#If
SwitchAreaInNotepad()
{
WinGet, ControlList, ControlList
if !(pref := WeOrNs(ControlList))
Return
pos := GetSpliterPos(ControlList, pref)
ControlGetPos, X, Y, W, H, %pref%spliter1
if (pos = "D")
x_click := X + 3, y_click := Y + H - 3
if (pos = "R")
x_click := X + W - 3, y_click := Y + 3
if (pos = "U")
x_click := X + 3, y_click := Y + 3
if (pos = "L")
x_click := X + 3, y_click := Y + H - 3
ControlClick, X%x_click% Y%y_click%
ControlFocus, % GetCurrentScintilla(ControlList, pref)
}
WeOrNs(List)
{
for k, spliter in ["nsspliter1", "wespliter1"] {
if InStr(List, spliter) {
ControlGet, vis, Visible,, % spliter
if vis
Return SubStr(spliter, 1, 2)
}
}
}
GetSpliterPos(List, pref)
{
Scintilla := GetCurrentScintilla(List, pref)
if (pref = "we")
coord1 := "X", coord2 := "W"
else
coord1 := "Y", coord2 := "H"
ControlGetPos, X, Y, W, H, %pref%spliter1
center := %coord1% + %coord2%//2
ControlGetPos, X, Y, W, H, % Scintilla
if (Abs(%coord1% - center) < Abs(%coord1% + %coord2% - center))
Return (pref = "we") ? "D" : "R"
else
Return (pref = "we") ? "U" : "L"
}
GetCurrentScintilla(List, pref)
{
coord := pref = "we" ? "W" : "H"
CurrentScintilla := Scintilla1, CoordPrev := 0
Loop, parse, List, `n
{
if InStr(A_LoopField, "Scintilla") {
ControlGet, vis, Visible,, % A_LoopField
if vis {
ControlGetPos,,, W, H, % A_LoopField
if (%coord% > CoordPrev)
CoordPrev := %coord%, CurrentScintilla := A_LoopField
}
}
}
Return CurrentScintilla
}
Нужно учитывать, что Scintilla может быть не только с индексами 1 или 2, но и больше.
Разработка AHK-скриптов:
e-mail
dfiveg@mail.ruTelegram
jollycoder