Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как отслеживать TOPMOST своей формы?
|
|||
|---|---|---|---|
|
#18+
Для отображения своей формы «поверх всех» использую функцию API - SetWindowPos с параметром "HWND_TOPMOST", но заметил, что другие запускаемые программы с таким же свойством, смещают мою форму к фону и перекрывают собой. Я пишу программу, которая работает с различными окнами других приложений и для это важно, чтобы она всегда была на виду. Подскажите, пожалуйста, как мне проверить, что моя форма утратила свойство TOPMOST??? Пересмотрел другие похожие топики, но нигде не нашел ответа на этот вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2010, 17:42 |
|
||
|
Как отслеживать TOPMOST своей формы?
|
|||
|---|---|---|---|
|
#18+
Проверить и, если нет, сделать топмост? Так делайте сразу топмост вместо проверки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2010, 21:00 |
|
||
|
Как отслеживать TOPMOST своей формы?
|
|||
|---|---|---|---|
|
#18+
Так в том-то и дело, что (я же написал...) топмост своей формы я делаю сразу. Но другие проги тоже запускаемые в режиме топмост, смещают мою форму. Вот мне нужно как-то отслеживать, что моя форма уже не топмост и снова сделать ей топмост. Вообщем, думаю, понятно объяснил. Так вот, как мне проверить, что в процессе работы, моя форма уже не топмост??? Пробовал запускать SetWindowPos --> HWND_TOPMOST по циклу, получается... но, вместе с этим, появляются нежелательные эффекты: как только моя форма теряет фокус, сразу же начинает мигать своей панелью, что-то типа FlashWindows. Хотелось бы сделать без этих "спецэффектов", как-то более корректно. Наверняка есть какие-то способы проверять является ли форма топмост на данный момент или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 15:59 |
|
||
|
Как отслеживать TOPMOST своей формы?
|
|||
|---|---|---|---|
|
#18+
awl100AlexТак вот, как мне проверить, что в процессе работы, моя форма уже не топмост??? По таймеру. awl100AlexНаверняка есть какие-то способы проверять является ли форма топмост на данный момент или нет?GetForegroundWindow. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 16:44 |
|
||
|
Как отслеживать TOPMOST своей формы?
|
|||
|---|---|---|---|
|
#18+
Antonariy К сожалению GetForegroundWindow (функция возвращает хэндл активного окна) срабатывает как только моя форма теряет фокус и опять начинаются мигания панелькой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 19:40 |
|
||
|
Как отслеживать TOPMOST своей формы?
|
|||
|---|---|---|---|
|
#18+
Мне нужно чтобы моя форма, даже потеряв фокус, все равно оставалась "поверх всех" и автоматически восстанавливало это свойство, когда другие окна ее перекрывают при запуске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 19:48 |
|
||
|
Как отслеживать TOPMOST своей формы?
|
|||
|---|---|---|---|
|
#18+
Вообще окно с HWND_TOPMOST при потере фокуса может быть перекрыто только другими HWND_TOPMOST. Чтобы избежать мигания, нужно полностью имитировать действия пользователя, как если бы он кликнул по этому окну. Jah loves you. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 09:51 |
|
||
|
Как отслеживать TOPMOST своей формы?
|
|||
|---|---|---|---|
|
#18+
AntonariyВообще окно с HWND_TOPMOST при потере фокуса может быть перекрыто только другими HWND_TOPMOST. Правильно! И чтобы этого не происходило, решил проблему таким вот образом... через проверку стиля WS_EX_TOPMOST активного окна. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. Проблема решена! :) Antonariy спасибо за подсказку... просто немного расширил твою идею. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 13:27 |
|
||
|
Как отслеживать TOPMOST своей формы?
|
|||
|---|---|---|---|
|
#18+
Изменять стили чужих окон — идея отстойная. А если столкнутся две такие программы? Или две копии вашей? Это такая свистопляска получится. Jah loves you. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 13:48 |
|
||
|
Как отслеживать TOPMOST своей формы?
|
|||
|---|---|---|---|
|
#18+
AntonariyА если столкнутся две такие программы? Или две копии вашей? Это такая свистопляска получится. Двух копий моей не будет – предусмотрено, да и не зачем. Насчет двух таких же программ... вполне может быть, но маловероятно. Обычно все используют однократную установку TOPMOST и не заморачиваются на подобных алгоритмах. К тому же других идей удовлетворяющее все возможные тонкости и условия у меня нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 15:49 |
|
||
|
Как отслеживать TOPMOST своей формы?
|
|||
|---|---|---|---|
|
#18+
> Автор: awl100Alex > Насчет двух таких же программ... вполне может быть, но маловероятно. Я довольно активно использую Task Manager, который по умолчанию "поверх всех". Но меня спасет второй монитор Это просто пример, навскидку из самого распространенного. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 15:54 |
|
||
|
Как отслеживать TOPMOST своей формы?
|
|||
|---|---|---|---|
|
#18+
Пожалуй, нужно будет в процедуру Timer1 добавить после GetForegroundWindow еще строчку... Код: plaintext Игорь Горбонос Два монитора... – не думаю, что это самое распространенное явление. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 15:00 |
|
||
|
|

start [/forum/topic.php?fid=60&tid=2160172]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 129ms |

| 0 / 0 |
