Aleksks
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору задача 1: 1) при нажатии кнопки 9: переключить с текущего окна панели задач на предыдущее 2) при втором нажатии кнопки 9: переключить с предыдущего окна на текущее (оно же исходное) 3) при последующих нажатиях кнопки 9: предыдущие 2 действия просто повторяются (сначала первое, затем второе) задача 2 (почти такая же, но с обратным смыслом): 1) при нажатии кнопки 0: переключить с текущего окна панели задач на следующее 2) при втором нажатии кнопки 0: переключить с следующего окна на текущее (оно же исходное) 3) при последующих нажатиях кнопки 0: предыдущие 2 действия просто повторяются (сначала первое, затем второе) обе задачи выполнены (не мной) в работающем auto-it-скрипте. вот его соответствующая часть: Код: Case $sSwitchNextBack_HT If $sLast_NextBack_Window <> $aTaskBarWindows[$i][0] Then $sLast_NextBack_Window = "" If $sLast_NextBack_Window = "" Then If $i = $aTaskBarWindows[0][0] Then $i = 0 $sActivate_Window = $aTaskBarWindows[$i + 1][0] $sLast_NextBack_Window = $sActivate_Window Else If $i = 1 Then $i = $aTaskBarWindows[0][0] + 1 $sActivate_Window = $aTaskBarWindows[$i - 1][0] $sLast_NextBack_Window = "" EndIf Case $sSwitchBackNext_HT If $sLast_BackNext_Window <> $aTaskBarWindows[$i][0] Then $sLast_BackNext_Window = "" If $sLast_BackNext_Window = "" Then If $i = 1 Then $i = $aTaskBarWindows[0][0] + 1 $sActivate_Window = $aTaskBarWindows[$i - 1][0] $sLast_BackNext_Window = $sActivate_Window Else If $i = $aTaskBarWindows[0][0] Then $i = 0 $sActivate_Window = $aTaskBarWindows[$i + 1][0] $sLast_BackNext_Window = "" EndIf | пытаюсь реализовать обе эти задачи в ahk кроме одного нюанса всё работает (и значительно быстрее, чем в рамках auto-it-кода) нюанс в том, что auto-it-код постоянно (кроме совсем редких случаев) отрабатывает обе задачи корректно (например, после моих ручных переходов мышкой по разным кнопкам панели задач) и делает он это вне зависимости от того, сколько раз я нажал кнопку 9 (или 0 для другой задачи): чётное количество раз или нечётное а вот ahk-код отрабатывает задачу корректно только если количество нажатий кнопи 9 (или 0 для другой задачи) чётное некорректность проявляется в переключении на неправильное окно: - следующее вместо предыдущего (при задаче 1) - предыдущее вместо следующего (при задаче 2) то есть, с точки зрения имеющегося кода, всё делается правильно. но задача тут более сложная: не зависеть от количества нажатий и не знаю, как это прописать в ahk-коде поэтому прошу подсказать, как доделать этот почти готовый ahk-скрипт. вот его соответствующая часть: Код: 9:: PreviousCurrentMode++ if (PreviousCurrentMode & 1) { Gosub, ReadWindowsOnTaskbar If(ActiveTaskbarItem) { ItemPrev := ActiveTaskbarItem - 1 If(ItemPrev < 1) { ItemPrev := TaskbarItemCount } } else { ItemPrev := ActiveTaskbarItem } ActivateTaskbarItem(ItemPrev) return } else { Gosub, ReadWindowsOnTaskbar If(ActiveTaskbarItem) { ItemNext := ActiveTaskbarItem + 1 If(ItemNext > TaskbarItemCount) { ItemNext := 1 } } else { ItemNext := ActiveTaskbarItem } ActivateTaskbarItem(ItemNext) PreviousCurrentMode = 0 return } 0:: NextCurrentMode++ if (NextCurrentMode & 1) { Gosub, ReadWindowsOnTaskbar If(ActiveTaskbarItem) { ItemNext := ActiveTaskbarItem + 1 If(ItemNext > TaskbarItemCount) { ItemNext := 1 } } else { ItemNext := ActiveTaskbarItem } ActivateTaskbarItem(ItemNext) return } else { Gosub, ReadWindowsOnTaskbar If(ActiveTaskbarItem) { ItemPrev := ActiveTaskbarItem - 1 If(ItemPrev < 1) { ItemPrev := TaskbarItemCount } } else { ItemPrev := ActiveTaskbarItem } ActivateTaskbarItem(ItemPrev) NextCurrentMode = 0 return } |
|