Что нового

[Окна, Диалоги] Переключение между окнами

k790

Новичок
Сообщения
239
Репутация
1
Всем привет!
Есть аптечная программа, в которой можно открыть окна. Так же можно открыть ещё одну копию программы, в которой можно открывать ещё окна.
Программа написана кривовато, поэтому если от начального окна уйти на 3-ее и далее, то потом очень проблематично вернуться на него.
Как выход можно было бы написать программу, которая выводила бы на передний план нужное окно.
Подскажите как лучше определить нужное окно и вывести его на передний план?

Определить окна по процессу нельзя, так как процессов может быть несколько. По заголовку можно, но в какой-то момент заголовков может оказаться несколько с одним именем.

По сути получается надо сделать свой "Alt+Tab" (переключение между окнами), со всеми окнами.

P.S.
Прошу не сделать за меня программу, а подсказать как лучше и с помощью чего.
Спасибо.

Пока нашёл такое:
Код:
$var = WinList()

For $i = 1 to $var[0][0]
  ; Only display visble windows that have a title
  If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
    MsgBox(0, "Details", "Title=" & $var[$i][0] & @LF & "Handle=" & $var[$i][1])
  EndIf

Next

Func IsVisible($handle)
  If BitAnd( WinGetState($handle), 2 ) Then 
    Return 1
  Else
    Return 0
  EndIf

EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
k790
как лучше определить нужное окно
Сначала необходимо понять, чем нужное окно отличается от ненужного. Определить критерии поиска, а затем
Код:
WinActivate()
; или
WinSetOnTop()


если от начального окна уйти на 3-ее и далее, то потом очень проблематично вернуться на него
Вот это вообще не понятно... куда уйти, к кому вернуться... :stars:
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
InnI [?]
Вот это вообще не понятно... куда уйти, к кому вернуться...
stars.gif
Смотри:
Открывается главное окно - 1
В главном окне можно открыть ещё окно, скажем список документов - 2
В списке документов можно выбрать группу или конкретный документ - 3

Теперь если я переведу фокус с третьего окна на 1 или 2, или всё сверну, то я не смогу без танцев с бубном сделать фокус на 3-е окно.
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
InnI [?]
MDI-интерфейс, что ли?
Похоже нет, там разные хэндлы.
В программе нашёл что слева вылазиет панель в которой есть открытые окна, так что вопрос думаю закрыт, а для общего развития чего-нибудь сделаю

Спасибо.
 

Александр_

[url=http://autoit-script.ru/index.php?topic=21393
Сообщения
62
Репутация
2
Доброго времени суток! Если handle-ы разные, то и обращаться к ним допустим при нажатии клавиши. Клавишу можно прописать как горячую. Т.е при нажатии горячей клавиши активируем окно с handle-ем таким-то. Для нахождения handle можно использовать
Код:
WinList
и найти по заголовку нужные окна. :IL_AutoIt_1:
 
Верх