Тема: AHK: WinGet List порядок
Хочу узнать, возможно ли получить список окон в порядке, в котором они были открыты (в котором они расположены на панели задач)?
Пробовал через панель задач, но в Win 7 что-то поменялось в этом плане, поэтому старые скрипты не работают.
Например:
TaskBar_GetSwbarId() {
DetectHiddenWindows, On
WinGet, ControlList, ControlList, ahk_class Shell_TrayWnd
RegExMatch(ControlList, "(?<=ToolbarWindow32)\d+(?!.*ToolbarWindow32)", nTB)
Loop, %nTB%
{
ControlGet, hWnd, hWnd,, ToolbarWindow32%A_Index%, ahk_class Shell_TrayWnd
hParent := DllCall( "GetParent", Ptr, hWnd )
WinGetClass, sClass, ahk_id %hParent%
If (sClass <> "MSTaskSwWClass")
Continue
ControlGet, hwndTB, hwnd, , ToolbarWindow32%A_Index%, ahk_class Shell_TrayWnd
Break
}
Return hwndTB
}
MSTaskSwWClass в Windows 7 больше не является родителем ToolbarWindow32. Если напрямую обращаться к ToolbarWindow321 - получится доступ к области уведомлений (tray), а не к панели задач (taskbar).
При отсылании TB_BUTTONCOUNT к ToolbarWindow322, как и к ReBarWindow321, возвращается 0.
Может возможен вариант через PID? Правда я не знаком со схемой их генерации. Может ли произойти так что меньший PID освободился и новый процесс может его занять? Или они всегда идут инкрементом до 65535?