![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Форма всегда поверх рабочего стола [D7, WinXP]
Грибоед © (2006-12-28 23:06:00)Нужно сделать так чтобы главная форма приложения всегда находилась поверх рабочего стола и не сворачивалась при нажатии кнопки "свернуть все окна", а так же не выходила на передний план, когда пользователь делает её активной. То есть, попросту говоря, форма всегда должна висеть над рабочим столом ниже всех окон и не сворачивается в панель задач.
Подскажите, как можно подобное реализовать?
Грибоед (2007-01-07 03:02:00) [1]> останется отработать случай, когда explorer перезагрузится:)
А как узнать что explorer перезагрузился?
antonn (2007-01-06 22:08:00) [2]Грибоед (06.01.07 18:11) [3]
Windows.SetParent(Form1.Handle, FindWindowEx(FindWindowEx(FindWindowEx(GetDesktopWindow, 0,'Progman','Program Manager'), 0, 'SHELLDLL_DefView', nil), 0, 'SysListView32', nil));
останется отработать случай, когда explorer перезагрузится:)
Грибоед (2007-01-06 18:11:00) [3]Мне удалось найти решение...
Форма всегда ниже всех окон:
protected
procedure WndProc(var Message:TMessage); override;
...
procedure TForm1.WndProc(var Message: TMessage);
begin
if Message.Msg = WM_WINDOWPOSCHANGING then begin
with PWindowPos(Message.lParam)^ do begin
if FormStyle = fsStayOnTop then hwndInsertAfter := HWND_TOPMOST
else hwndInsertAfter := HWND_BOTTOM;
end;
end;
inherited;
end;
Запрещаем сворачивание формы при нажатии кнопки "Свернуть все окна":
Windows.SetParent(Form1.Handle, FindWindowEx(FindWindowEx(FindWindowEx(GetDesktopWindow, 0,'Progman','Program Manager'), 0, 'SHELLDLL_DefView', nil), 0, 'SysListView32', nil));
Elen (2006-12-29 16:03:00) [4]
> Попробуй поместить внутрь рабочего стола:
... и запретить кнопки сворачивания ;)
GrayFace (2006-12-29 13:25:00) [5]Попробуй поместить внутрь рабочего стола:
windows.SetParent(Handle, FindWindow('Progman', nil));