Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.18;
Скачать: CL | DM;

Вниз

Always On Bottom   Найти похожие ветки 

 
Newuser0   (2006-11-03 15:14) [0]

Каким образом можно реализовать задачу, чтобы главное окно моей программы было всегда позади окон других программ?
...
Доброе время суток, уважаемые мастера.
Пишу программу, нечто подобное оболочки для OS Windows. Я уже когда-то давно несколько лет назад задавал этот вопрос, и здесь мне дали грамотный ответ, но моя программа вместе с исходником бесследно пропала. По этому приходится снова задавать этот вопрос.


 
NewUser0   (2006-11-03 15:26) [1]

приношу извинения, неувидел что данныи вопрос уже обсуждается


 
Сергей М. ©   (2006-11-03 15:47) [2]


> Newuser0   (03.11.06 15:14)


Никак.
Всегда найдется программа, желающая того же.


 
DVM ©   (2006-11-03 16:12) [3]


> Сергей М. ©   (03.11.06 15:47) [2]

Можно ниже всех. Но только один раз.
Есть такая недокументированная функция, которую использует эксплорер:
function SetShellWindow(hWnd: HWND): dword; stdcall; external "User32.dll" name "SetShellWindow";

Она позволяет окно отодвинуть на задний план и оно будет удерживаться там системой. Но если уже есть одно такое окно (а оно как правило есть - это окно эксплорера) то функция ничего не делает.

С VCL окнами не работает - проблема где то в Application вроде как.


 
PEAKTOP ©   (2006-11-03 17:30) [4]

> С VCL окнами не работает - проблема где то в Application вроде как.


Работает, если передать хендл не TForm, а Application

> Но если уже есть одно такое окно (а оно как правило есть  - это окно эксплорера)

Не вопрос.
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System
Shell="explorer.exe"

Поменять на
Shell="c:\myprogramdir\myprog.exe"


 
newuser0   (2006-11-04 15:07) [5]

Shell="c:\myprogramdir\myprog.exe"
ничего по данному вопросу недаст, т.к. программа загрузится вместо explorer´a и все, а окно позади других небудет


 
DVM ©   (2006-11-05 10:37) [6]


> ничего по данному вопросу недаст, т.к. программа загрузится
> вместо explorer´a и все, а окно позади других небудет

Ты ответы читаешь? Все будет как надо. Если еще для верности применить SetWindowPos() с нужными параметрами и добавить обработчик WM_WINDOWPOSCHANGING - то вообще будет замечательно.


 
Leonid Troyanovsky ©   (2006-11-05 14:14) [7]


> DVM ©   (05.11.06 10:37) [6]

> применить SetWindowPos() с нужными параметрами и добавить
> обработчик WM_WINDOWPOSCHANGING - то вообще будет замечательно.


Если все это применить, то, пожалуй, и в недокументированных
функциях нужды не возникнет.

--
Regards, LVT.


 
DVM ©   (2006-11-05 15:02) [8]


> Если все это применить, то, пожалуй, и в недокументированных
> функциях нужды не возникнет.

Может да, а может и нет. Эти действия не гарантируют, что окно шелла будет ниже всех. Всегда найдется программа, окно которой сможет залезть под окно шелла. С SetShellWindow() такое невозможно.


 
DVM ©   (2006-11-05 15:05) [9]

Самое верное в NT системах переключение на свой созданный десктоп. Там и диспетчера задач видно не будет.


 
DVM ©   (2006-11-05 15:06) [10]

Упс... Сообщение [8] не в эту ветку. Удалите.



Страницы: 1 вся ветка

Текущий архив: 2007.03.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.085 c
3-1166908987
ndg
2006-12-24 00:23
2007.03.18
Создание альяса ODBC программно


3-1166606026
Ilg
2006-12-20 12:13
2007.03.18
Текстовая БД и русские символы


15-1172145303
xayam
2007-02-22 14:55
2007.03.18
Новая версия программы DelphiTo v0.23


15-1171701023
Александр Иванов
2007-02-17 11:30
2007.03.18
Дважды MCP


15-1172172498
@!!ex
2007-02-22 22:28
2007.03.18
Звездные войны