Главная страница
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.05 c
15-1171729161
ProgRAMmer Dimonych
2007-02-17 19:19
2007.03.18
Подскажите новичку


4-1162547214
kudatsky
2006-11-03 12:46
2007.03.18
Как получить серийный номер винчестера ?


15-1172180996
wp2
2007-02-23 00:49
2007.03.18
Где именно нулевая дорожка?


15-1172330626
SergP_n/a
2007-02-24 18:23
2007.03.18
О железе. Винт + CDROM не хотят уживаться. Что делать?


15-1171815412
C@N
2007-02-18 19:16
2007.03.18
Виндовс, линукс.....хе...