![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Always On Bottom [D7, WinXP]
Newuser0 © (2006-11-03 15:14:00)Каким образом можно реализовать задачу, чтобы главное окно моей программы было всегда позади окон других программ?
...
Доброе время суток, уважаемые мастера.
Пишу программу, нечто подобное оболочки для OS Windows. Я уже когда-то давно несколько лет назад задавал этот вопрос, и здесь мне дали грамотный ответ, но моя программа вместе с исходником бесследно пропала. По этому приходится снова задавать этот вопрос.
DVM (2006-11-05 15:06:00) [1]Упс... Сообщение [8] не в эту ветку. Удалите.
DVM (2006-11-05 15:05:00) [2]Самое верное в NT системах переключение на свой созданный десктоп. Там и диспетчера задач видно не будет.
DVM (2006-11-05 15:02:00) [3]
> Если все это применить, то, пожалуй, и в недокументированных
> функциях нужды не возникнет.
Может да, а может и нет. Эти действия не гарантируют, что окно шелла будет ниже всех. Всегда найдется программа, окно которой сможет залезть под окно шелла. С SetShellWindow() такое невозможно.
Leonid Troyanovsky (2006-11-05 14:14:00) [4]
> DVM © (05.11.06 10:37) [6]
> применить SetWindowPos() с нужными параметрами и добавить
> обработчик WM_WINDOWPOSCHANGING - то вообще будет замечательно.
Если все это применить, то, пожалуй, и в недокументированных
функциях нужды не возникнет.
--
Regards, LVT.
DVM (2006-11-05 10:37:00) [5]
> ничего по данному вопросу недаст, т.к. программа загрузится
> вместо explorer´a и все, а окно позади других небудет
Ты ответы читаешь? Все будет как надо. Если еще для верности применить SetWindowPos() с нужными параметрами и добавить обработчик WM_WINDOWPOSCHANGING - то вообще будет замечательно.
newuser0 (2006-11-04 15:07:00) [6]Shell="c:\myprogramdir\myprog.exe"
ничего по данному вопросу недаст, т.к. программа загрузится вместо explorer´a и все, а окно позади других небудет
PEAKTOP (2006-11-03 17:30:00) [7]> С VCL окнами не работает - проблема где то в Application вроде как.
Работает, если передать хендл не TForm, а Application
> Но если уже есть одно такое окно (а оно как правило есть - это окно эксплорера)
Не вопрос.
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System
Shell="explorer.exe"
Поменять на
Shell="c:\myprogramdir\myprog.exe"
DVM (2006-11-03 16:12:00) [8]
> Сергей М. © (03.11.06 15:47) [2]
Можно ниже всех. Но только один раз.
Есть такая недокументированная функция, которую использует эксплорер:
function SetShellWindow(hWnd: HWND): dword; stdcall; external 'User32.dll' name 'SetShellWindow';
Она позволяет окно отодвинуть на задний план и оно будет удерживаться там системой. Но если уже есть одно такое окно (а оно как правило есть - это окно эксплорера) то функция ничего не делает.
С VCL окнами не работает - проблема где то в Application вроде как.
Сергей М. (2006-11-03 15:47:00) [9]
> Newuser0 (03.11.06 15:14)
Никак.
Всегда найдется программа, желающая того же.
NewUser0 (2006-11-03 15:26:00) [10]приношу извинения, неувидел что данныи вопрос уже обсуждается