Здравствуйте, Аноним, Вы писали:
А>Здравствуйте!
А>Каким образом можно получить хендл окна, которое находится поверх всех других, но при этом не активно?
Если я правильно понял вопрос, то окно, которое поверх всех других, но неактивно — это окно, находящееся сразу за окном, которое поверх всех других.
Re[2]: Получить окно, которое поверх всех других, но неактив
От:
Аноним
Дата:
20.06.04 10:46
Оценка:
Здравствуйте, Flamer, Вы писали:
F>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте!
А>>Каким образом можно получить хендл окна, которое находится поверх всех других, но при этом не активно?
F>Может, что-то типа этого: F>
[]
А>Нет, это неработает. Задача проста: перед кликом на иконке в трее надо найти Foreground-окно. Но GetForegroundWindow дает хендл панели задач
Перед кликом? Судя по тому, что вы описываете, вы это делаете во время клика Естественно, что в этом случае "GetForegroundWindow дает хендл панели задач"
А зачем все это нужно, если не секрет?
Re[4]: Получить окно, которое поверх всех других, но неактив
От:
Аноним
Дата:
20.06.04 11:14
Оценка:
Здравствуйте, Flamer, Вы писали:
F>Здравствуйте, Аноним, Вы писали:
F>[]
А>>Нет, это неработает. Задача проста: перед кликом на иконке в трее надо найти Foreground-окно. Но GetForegroundWindow дает хендл панели задач
F>Перед кликом? Судя по тому, что вы описываете, вы это делаете во время клика Естественно, что в этом случае "GetForegroundWindow дает хендл панели задач"
F>А зачем все это нужно, если не секрет?
Объясняю: на экране активно окно. Я вызываю меню своей программы из трея, выбираю там какой-либо пункт (в результате этого выбора никаких окон моей программы не показывается), затем меню, естественно, закрывается. А окно, которое было активно до вызова меню, активным не становится. Так вот, надо его активизировать.
Re[5]: Получить окно, которое поверх всех других, но неактив
[]
F>>А зачем все это нужно, если не секрет?
А>Объясняю: на экране активно окно. Я вызываю меню своей программы из трея, выбираю там какой-либо пункт (в результате этого выбора никаких окон моей программы не показывается), затем меню, естественно, закрывается. А окно, которое было активно до вызова меню, активным не становится. Так вот, надо его активизировать.
Объясняю: то, чем вы занимаетесь, называется вырезанием гланд через ж... Для того, чтобы выпадающее меню в нормально закрывалось, надо _перед_ вызовом этого выпадающего меню сделать
SetForegroundWindow(m_hWnd);
где m_hWnd — хендл главного окна вашего приложения. И все будет нормально.
Re[5]: Получить окно, которое поверх всех других, но неактив
Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, Flamer, Вы писали:
F>>Здравствуйте, Аноним, Вы писали:
F>>[]
А>>>Нет, это неработает. Задача проста: перед кликом на иконке в трее надо найти Foreground-окно. Но GetForegroundWindow дает хендл панели задач
F>>Перед кликом? Судя по тому, что вы описываете, вы это делаете во время клика Естественно, что в этом случае "GetForegroundWindow дает хендл панели задач"
F>>А зачем все это нужно, если не секрет?
А>Объясняю: на экране активно окно. Я вызываю меню своей программы из трея, выбираю там какой-либо пункт (в результате этого выбора никаких окон моей программы не показывается), затем меню, естественно, закрывается. А окно, которое было активно до вызова меню, активным не становится. Так вот, надо его активизировать.
Тады ставь callback (см. NOTIFYICONDATA.uCallbackMessage), обрабатывай WM_MOUSEMOVE и запоминай хендл от GetForegroundWindow()
HgLab: Mercurial Server and Repository Management for Windows