Форум: "WinAPI";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c