Вопрос № 22978: Здравствуйте.
Для определения хэндла активного окна использую GetForegroundWindow, но при активизации некоторых окон возникает ошибка и программа закрывается. Если использовать обработку исключительных ситуаций (Delphi7), то программа со всеми ок...
Вопрос № 22.978
Здравствуйте.
Для определения хэндла активного окна использую GetForegroundWindow, но при активизации некоторых окон возникает ошибка и программа закрывается. Если использовать обработку исключительных ситуаций (Delphi7), то программа со всеми окнами работает некорректно. Подскажите пожалуйста как это исправить или какой еще функцией можно воспользоваться.
Заранее благодарен.
Отправлен: 02.07.2005, 13:10
Вопрос задал: Ivaan (статус: Посетитель)
Всего ответов отправлено: 2
Отвечает: Залетин Виталий Викторович
Здравствуйте, Ivaan!
Можно еще испоьзовать {Get}WindowFromРoint - она вернет хэндл окна под мышью. Мой совет: поройтесь на сайте http://www.vb.kiev.ua/ref/w32api/. Я понимаю, что сайт посвящен Visual Basic, но при желании можно все перевести, тем более, что справочник по АПИ там приличный.
Отвечает: Ерёмин Андрей
Здравствуйте, Ivaan!
Для определения хэндла (handle) активного окна можно воспользоваться следующими функциями:
GetForegroundWindow() - возвращает handle окна, которое является активным в данный момент.
GetFocus() - возвращает handle окна, которое в данный момент имеет фокус ввода с клавиатуры.
GetActiveWindow() - возвращает handle активного окна.
Если при использовании этих функций возникает программное исключение (exception) или выдаётся неверный результат, можно пойти таким путём: если одна из функций дала неверный результат, то пробуем другой функцией, затем третьей. Наверное, это близко к истине. Кроме того, любой handle не может быть меньше 32. Пример кода в приложении (писал из головы, если что неточно, прошу простить). Удачи!
Приложение:
--------- Если б не было бы глюка, жизнь была б такая скyка...
Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 04.07.2005, 07:31