Тестирование AlwaysOnTop опции
#1
Отправлено 18 мая 2009 - 16:24
Как можно определить, какое окно в данный момент находится выше всех остальных окон, если оно не является активным в данный момент? (DeskTop.GetActive() не подходит)
Спасибо
#2
Отправлено 19 мая 2009 - 10:50
По идее это можно сделать, обратившись к окну по индексу. Самое верхнее окно и по индексу идет первым. То есть что-то типаНеобходимо протестировать опцию AlwaysOnTop окна.
Как можно определить, какое окно в данный момент находится выше всех остальных окон, если оно не является активным в данный момент? (DeskTop.GetActive() не подходит)
Спасибо
AnyWin( "#1" )
или
MainWin( "#1" )
смотря, что за окно у вас там.
А уже получив данное окно, можно будет проверить различные атрибуты, по которым вы можете удостовериться, что это именно то окно, что вам нужно
#3
Отправлено 19 мая 2009 - 15:41
По идее это можно сделать, обратившись к окну по индексу. Самое верхнее окно и по индексу идет первым. То есть что-то типаНеобходимо протестировать опцию AlwaysOnTop окна.
Как можно определить, какое окно в данный момент находится выше всех остальных окон, если оно не является активным в данный момент? (DeskTop.GetActive() не подходит)
Спасибо
AnyWin( "#1" )
или
MainWin( "#1" )
смотря, что за окно у вас там.
А уже получив данное окно, можно будет проверить различные атрибуты, по которым вы можете удостовериться, что это именно то окно, что вам нужно
Спасибо! На самом деле, очень красивое решение :-) А я уже полезла в dll.
Но проблема в том, что под тестируемым TopMost окном должно быть как минимум еще одно окно такого же типа (которое будет иметь #2, для чистоты эксперимента). Поскольку тестируемое приложение .Net, то на системе должно быть проинсталлировано еще одно .Net приложение для этого теста, а это уже не совсем удобно :-(
#4
Отправлено 20 мая 2009 - 16:20
#5
Отправлено 22 мая 2009 - 12:45
Если под ним будет простое приложение, то у нас получится одно окно SwfDailogBox ("#1"), а второе (простое) - DialogBox (#1), т.е. разные классы, поэтому теряется всякий смысл проверки.а простого приложения (notepad.exe , calc.exe) под ним недостаточно?
#6
Отправлено 27 мая 2009 - 11:15
В таком случае, вы можете пройтись по всем существующим окнам верхнего уровня. Что-то типаПо идее это можно сделать, обратившись к окну по индексу. Самое верхнее окно и по индексу идет первым. То есть что-то типаНеобходимо протестировать опцию AlwaysOnTop окна.
Как можно определить, какое окно в данный момент находится выше всех остальных окон, если оно не является активным в данный момент? (DeskTop.GetActive() не подходит)
Спасибо
AnyWin( "#1" )
или
MainWin( "#1" )
смотря, что за окно у вас там.
А уже получив данное окно, можно будет проверить различные атрибуты, по которым вы можете удостовериться, что это именно то окно, что вам нужно
Спасибо! На самом деле, очень красивое решение :-) А я уже полезла в dll.
Но проблема в том, что под тестируемым TopMost окном должно быть как минимум еще одно окно такого же типа (которое будет иметь #2, для чистоты эксперимента). Поскольку тестируемое приложение .Net, то на системе должно быть проинсталлировано еще одно .Net приложение для этого теста, а это уже не совсем удобно :-(
while( AnyWin( "#{i}" ).Exists() ) // Place your checkpoints here i++и проверять текст заголовка окна. Если у вас приложение работает в режиме Always on Top, то по идее первыми окнами будут именно окна тестируемого приложения.
#7
Отправлено 23 июля 2009 - 09:50
В результате отстановились на использовании функции WindowFromPoint (из библиотеки user32.dll).
Всем спасибо!
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных