![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Еще раз про "приклеивание" окна к рабочему столу
Ал © (2003-10-21 11:57:00)Хотел "прилепить" окно к рабочему столу, чтобы оно ничем не сворачивалось (WinKey+D) и убрать кнопку с Toolbar.
Сделал:
1) Applet.Visible := False;
2) SetParent(Form1.Form.Handle, FindWindow('ProgMan', nil));
3) Form1.Form.StayOnTop := True;
Получилось:
Если перед запуском программы сворачивал все окна (кнопкой "Свернуть все окна" или WinKey+D),
то окно не показывается, пока не откроешь какое-нибудь другое окно (например папку).
Потом все работает так как ожидаю.
Если окна не сворачивать - то сразу все работает.
Если не делать SetParent(Form1.Form.Handle, FindWindow('ProgMan', nil)), то окно программы появляется,
но оно не "приклеивается" к рабочему столу.
Думаю, нужно как-то вернуть рабочий стол из свернутого состояния в нормальное. А как - не знаю.
Подскажите, что можно сделать?
Ал (2003-10-21 22:09:00) [1]Похоже, что так. Но как-то можно вытянуть его назад? В ручном режиме достаточно открыть любое окно в Explorer (либо снова WinKey+D) - и все нормально. Смотрел в WinSight - идут обычные сообщения WM_WINDOWPOSCHANGED, WM_WINDOWPOSCHANGING - просто меняют координаты окон функциями типа SetWindowPos (сбрасывают окна ниже видимой границы, а потом возвращают). Пытался проделывать это с ProgMan - никакой реакции. Но ведь как-то это можно. Не эмулировать же нажатие WinKey+D, да и в Win95 это не сработает.
Знатоки, еще идеи есть? Может интерфейс какой это делает? Долго рылся в msdn - ничего не нашел.
Yury Sidorov (2003-10-21 20:46:00) [2]Похоже когда происходит "Свернуть все окна", то окно, которе представляет собой десктоп перемещается в самый верх. Все окна оказываются внизу, под ним.
Ал (2003-10-21 15:55:00) [3]Знатоки, подскажите, как сдернуть Explorer из состояния "Свернуть все окна". Пробовал слать разные сообщения окну FindWindow('ProgMan', nil) - ничего не помогает.
Двигал свое "прилипшее" и из-за этого потерявшееся окно функциями MoveWindow, SetWindowPos - окно не показывается, пока вручную мышью не откроешь какое-нибудь другое окно - тогда и мое "прилипшее" становится видно. И видно, что я его двигал!
Словно оно двигалось в невидимой области (хотя координаты давал 0, 0).