TForm *Form = NULL; // Временная переменная
for (int i = Application->ComponentCount-1; i >= 0; i--)
if ((Form = dynamic_cast <TForm*> (Application->Components )) != NULL)
Form->Enabled = false;
Деактивация всех окон.
Суть в том, что получив указатели на все окна, активные в данный момент я не знаю как их сделать неактивными. Есть же какая-то функция? Можно конечно просто спрятать окно, но я хочу именно блокировки. Подскажите пожалуйста. Заранее благодарен.
Далее, несмотря на то, что у объекта Application напрямую доступна только главная форма (свойство MainForm), ещё есть свойство Components - список принадлежащих ему объектов - которое можно перебрать через цикл:
Код:
Ой! Я наверное неверно изложил задачу. Я пишу программу, которая должна блокировать все окна (т.е. окна не привязанные к процессу, в рамках которого выполняется моя программа). У меня есть дескрипторы (hWnd) всех запущенных в системе окон. Какую функцию нужно вызвать, чтобы заблокировать эти окна. Т.е. грубо говоря, чтобы всем окнам передать сигнал, по которому они включили у себя Form.Enable=false.
А винда за это не обидиться :D
Если честно, какая цель данного деяния. Ибо похоже на весьма злую шутку, за которую можно получить взыскание в личное тело :(
После этого точно можно взыскание в личное тело получить :)