Перейти к содержимому

Фотография

Тестирование AlwaysOnTop опции


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 Vanessa

Vanessa

    Новый участник

  • Members
  • Pip
  • 10 сообщений

Отправлено 18 мая 2009 - 16:24

Необходимо протестировать опцию AlwaysOnTop окна.
Как можно определить, какое окно в данный момент находится выше всех остальных окон, если оно не является активным в данный момент? (DeskTop.GetActive() не подходит)
Спасибо
  • 0

#2 Dmitry_NS

Dmitry_NS

    Активный участник

  • Members
  • PipPip
  • 134 сообщений
  • ФИО:Дима
  • Город:Елизово

Отправлено 19 мая 2009 - 10:50

Необходимо протестировать опцию AlwaysOnTop окна.
Как можно определить, какое окно в данный момент находится выше всех остальных окон, если оно не является активным в данный момент? (DeskTop.GetActive() не подходит)
Спасибо

По идее это можно сделать, обратившись к окну по индексу. Самое верхнее окно и по индексу идет первым. То есть что-то типа

AnyWin( "#1" )

или

MainWin( "#1" )

смотря, что за окно у вас там.
А уже получив данное окно, можно будет проверить различные атрибуты, по которым вы можете удостовериться, что это именно то окно, что вам нужно
  • 0
Основной принцип моего существования — служение гуманистическим идеалам человечества.

#3 Vanessa

Vanessa

    Новый участник

  • Members
  • Pip
  • 10 сообщений

Отправлено 19 мая 2009 - 15:41

Необходимо протестировать опцию AlwaysOnTop окна.
Как можно определить, какое окно в данный момент находится выше всех остальных окон, если оно не является активным в данный момент? (DeskTop.GetActive() не подходит)
Спасибо

По идее это можно сделать, обратившись к окну по индексу. Самое верхнее окно и по индексу идет первым. То есть что-то типа

AnyWin( "#1" )

или

MainWin( "#1" )

смотря, что за окно у вас там.
А уже получив данное окно, можно будет проверить различные атрибуты, по которым вы можете удостовериться, что это именно то окно, что вам нужно


Спасибо! На самом деле, очень красивое решение :-) А я уже полезла в dll.
Но проблема в том, что под тестируемым TopMost окном должно быть как минимум еще одно окно такого же типа (которое будет иметь #2, для чистоты эксперимента). Поскольку тестируемое приложение .Net, то на системе должно быть проинсталлировано еще одно .Net приложение для этого теста, а это уже не совсем удобно :-(
  • 0

#4 vass

vass

    Опытный участник

  • Members
  • PipPipPipPip
  • 298 сообщений
  • ФИО:Василий

Отправлено 20 мая 2009 - 16:20

а простого приложения (notepad.exe , calc.exe) под ним недостаточно?
  • 0

#5 Vanessa

Vanessa

    Новый участник

  • Members
  • Pip
  • 10 сообщений

Отправлено 22 мая 2009 - 12:45

а простого приложения (notepad.exe , calc.exe) под ним недостаточно?

Если под ним будет простое приложение, то у нас получится одно окно SwfDailogBox ("#1"), а второе (простое) - DialogBox (#1), т.е. разные классы, поэтому теряется всякий смысл проверки.
  • 0

#6 Dmitry_NS

Dmitry_NS

    Активный участник

  • Members
  • PipPip
  • 134 сообщений
  • ФИО:Дима
  • Город:Елизово

Отправлено 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, то по идее первыми окнами будут именно окна тестируемого приложения.
  • 0
Основной принцип моего существования — служение гуманистическим идеалам человечества.

#7 Vanessa

Vanessa

    Новый участник

  • Members
  • Pip
  • 10 сообщений

Отправлено 23 июля 2009 - 09:50

Может кому-то будем полезным:
В результате отстановились на использовании функции WindowFromPoint (из библиотеки user32.dll).

Всем спасибо!
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных