Функция для программы (остановка) по нажатию клавиш

Марат
Заказчик

[no-member:pro]Марат[/no-member:pro]Марат

1 проектов
Завершён
Параметры проекта
Вариант сотрудничестваОдноразовый проект
Предоплатабез предоплат
Способы оплатыЭлектронные деньги
Приём заявокзавершён
Описание проекта
Есть бесконечный цикл. В этом цикле то минимизируются, то максимизируются разные окна (много окон).
Этот цикл бесконечный. Нужно остановить этот цикл по нажатию клавиши Escape. Проблема в том, что окно главной формы Form1
Не отображается вообще, пока идет этот цикл, т.к. В цикле отображаются другие окна - все подряд.
Они мелькают на экране постоянно. И не получается из Form1 отлавливать нажатие Escape при помощи Form1.OnkeyDown
Т.к. Эта форма Form1 не активна (её вообще на экране не видно). Как сделать в такой ситуации из Form1 контроль клавиши Escape?
Нужно из Form1 даже тогда когда она не активна отлавливать нажатия любых клавиш (в том числе функциональных)

Я сделал один вариант - создал новую форму Form_Wait_For_Key, которая ждет нажатие Escape некоторое время
В соответствии с таймером и передает в Form1 информацию о том, что нажата клавиша Escape.
Но тут возникла новая проблема. При отображении формы Form_Wait_For_Key методом Show эта форма Form_Wait_For_Key
Становится видна на экране (поверх всех окон), но она неактивная и из-за того, что она неактивная
Она не отлавливает нажатие клавиш. Как сделать форму активной? Какие для этого есть методы и свойства?
Свойство Form.Active можно только читать, а мне надо записывать, т.е. Сделать форму активной. Как это сделать?

Что нужно сделать:
1. В идеале мне нужно сделать глобальное отлавливание нажатых клавиш из неактивной формы - любые клавиши.
Мне сказали что это делается при помощи WH_KEYBOARD_LL но я не знаю как.

2. На скорую руку надо сделать в первую очередь вариант с Form_Wait_For_Key , т.е. Нужен способ сделать форму активной.

Сколько всё это будет стоить?
Это нужно срочно.
Автор проекта: Марат