| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Хочу, чтобы программа не сварачивалась!? |
| Автор: Nicholas 16.10.2004, 12:31 |
| При нажатии Windows+D прграмма сварачивается, а как это устранить???? |
| Автор: Alkash 16.10.2004, 12:45 |
| Отловить нажатия клавишь, и по их нажатию не давать свернуться. |
| Автор: Alex 16.10.2004, 13:50 | ||
Тебе только по нажатию комбинации нужно или что бы вообще не сворачивалась? |
| Автор: decoder 16.10.2004, 17:21 |
| Если Виндовз+Ды из ряда Альт+Ф4, то одним хуком тут не обойтись... В смысле, если хуку на Альт+Ф4 написать "резалт = 1", то пофиг Альт+Ф4 проскочит. Парадоксальный способ: MessageBox поставить - управление не возвращает, пока ОК не нажмёшь (это если комбинацию клавиш оконная функция не отлавливает, иначе придётся ещё и оконную функцию модифицировать...) - Альт+Ф4 из системной очереди сообщений просто исчезает! |
| Автор: Nicholas 18.10.2004, 07:07 | ||
Хотелось бы оба варианта увидеть, или хоть по по нажатию как??? |
| Автор: Snowy 18.10.2004, 08:14 |
| IMHO долхлый номер. Win+D не победить. Работает всегда. Если только в реестре запретить Win комбинации и перезагрузить систему. |
| Автор: imageman 18.10.2004, 11:07 |
| а если попробовать следить за состоянием окна? Координаты, видимость. А если после Win-D свое окно минимазировать и опять восстановить? Только что проверил на одной старой программе - там особыми параметрами окна делалось Always Top. - при нажатии win-D сначала окно минимизируется и тут же самостоятельно выскакивает обратно. |
| Автор: ~FoX~ 18.10.2004, 11:12 |
| Хм.......а если отловить WM_MINIMIZE и развернуть окно обратно З.Ы. Проверить не могу только что систему переставил |
| Автор: Akella 18.10.2004, 15:49 | ||
| может можно отлавдивать сообщения и реагировать на них по своему хотя
|
| Автор: Snowy 18.10.2004, 16:21 | ||
| У меня сработал вот такой вариант: Кидаем на форму TApplicationEvent. Создаем событие OnMessage.
Как ни странно, если форму не минимизировать хотя бы раз, она не хочет обманывать Win+D. Поэтому при OnCreate сразу ее минимизим, и тогда она всегда лезет наверх. |
| Автор: ~FoX~ 19.10.2004, 08:33 |
| Snowy Странно, у меня не получается |
| Автор: <Spawn> 19.10.2004, 10:39 |
| Попробуй поставить хук WH_CBT и ловить Code = HCBT_MINMAX, с последующей установкой результата функции хука в 1. |
| Автор: Nicholas 19.10.2004, 10:50 | ||
И у меня работает на Win XP, а на Win9x пробывал кто?? |
| Автор: imageman 19.10.2004, 11:08 | ||
Я сделал таймер и поставил в нем
после этого окно нельзя надолго свернуть. Сделано, конечно криво! Более грамотно сделано в TheBat - когда новое письмо приходит, то MailTicker не пропадает (у меня даже по Win-D). Может это из-за того, что оно постоянно обновляется? |
| Автор: Akella 31.1.2005, 12:17 | ||
а теперь не согласен у соседа игрушка отключает все подобные (для сворачивания) комбинации. Не смогли свернуть ее в панель задач |
| Автор: Snowy 31.1.2005, 13:10 |
| Угу. Отключить никак. А вот всплыть обратно можно. Некоторые игрушки просто рисуют себя, используя поверхность DC(0), которую просто невозможно свернуть по определению. Кстати, кто-нить пробовал приведенный мною выше код в 98-х? В ХР отрабатывает на ура. |
| Автор: Akella 31.1.2005, 14:46 | ||
Светодиод винчестера даже НЕ "блымнул". |
| Автор: Marriage 31.1.2005, 15:06 | ||
| Проверьте код, у меня работает ... Не сворачивается даже по WINDOWS+D
|
| Автор: ДЫМ 5.2.2005, 02:19 |
| Посмотри сюда http://forum.vingrad.ru/index.php?showtopic=41584 |
| Автор: Marriage 5.2.2005, 23:01 | ||
25-е июля .... ??? Что -то я не пойму, это получается , что вообще WINDOWS - D работать не будут в системе ...??? |
| Автор: ДЫМ 6.2.2005, 02:59 | ||
Этого то и добиваемся (еще меня радует, что отключается Win+L). А какой смысл отключать Win+D только для своего приложения. Впрочем, можно переделать глобальную ловушку в локальную (без DLL). P.S. Кстати, Alt-Tab тоже отрубается, хотя везде говорят, что его "нельзя победить" |
| Автор: Marriage 6.2.2005, 14:58 | ||||
Стртранно Я думал тема называется "Хочу, чтобы программа не сварачивалась!?, при нажатии Windows+D???"
Потому что многие покупать что-то подобное не будут ... |
| Автор: ДЫМ 7.2.2005, 03:47 | ||||||||
Я тебя, кажется понимаю, твой код приводит к тому, что все другие окна сворачиваются, а твоя форма - нет. Но есть еще такие клавиши как Win+E ==> Explorer Win+F+(Ctrl) ==> Find:All (and Find: Computer) Win+M ==> Minimize all Win+R ==> Run program. Win+F1 ==> Windows Help Alt+Tab С ними-то как быть? А в XP еще и "страшная" Win+L Если же надо, чтобы все эти сочетания не работали именно для твоей программы, а в других окнах обрабатывались, то используй локальную ловушку, вот примерно так:
Еще как будут. Вот тебе ситуация: мне не раз говорили : "Сделай, чтобы было так, - включил компьютер, загрузилась твоя программа и никаких рабочих столов, переключений между окнами - а то наши пользователи очень уж непродвинутые, напортачат чего-нибудь, или, чего доброго, в игры играть начнут." Вот тут-то этот способ и пригодится. |
| Автор: Marriage 7.2.2005, 12:58 | ||||
Интересный вопрос, что за организация ??? Обучать сотрудников надо. А то блин кричат, что у сотрудников руки кривые ... А сами ничего не делают ...
И как ты это исправишь отключением сочетания клавишь ??? А юзьвери в основном с мышой работают, может я не понимаю чего-нибудь, но если повесить хук на клавиатуру, он что, и мышу отловит ???? |
| Автор: ДЫМ 8.2.2005, 03:21 | ||||||
Нельзя ли немного покорректнее?...
Я смотрю пошел откровенный флейм, но я отвечу (подробнее). Я говорил о схеме "одна машина - одна задача" (используется, например, в технологическом мониторинге). Выглядит это так: загружается Windows, затем твоя программа - главная форма во весь экран и можно без заголовка. Панель задач отключается, чтобы не было искушения "с мышой поработать", дополнительно вешается хук на клавиатуру. В итоге пользователь может общаться только с твоей программой. После завершения работы приложения вызывается завершение работы компьютера. И все. Надеюсь, понятно? |
| Автор: Vit 8.2.2005, 07:27 | ||
win-D не сворачивает ничего, оно десктоп выносит вперёд а все приложения назад... Сворачивает Win-M.
Тогда это решается не програмно, а через Policy в реестре - устанавливаются все разрешения и не даются администранивные права, чтоб мышь не трогали - мышь - выдёргивается и кладётся в ящик стола на ключ, в BIOS отключается USB и PS порты, ставится пароль на BIOS. В Hardware профиле для этого пользователя отключается драйвер мыши, а если надо то и клавиатуры... и на фиг програмный огород городить... Моё ИМХО - 99% попыток перехвата Ctrl-Alt-Del, Win-D, Win-L и т.п. - это вредоносный код, вирусы и трояны, а оставшийся 1% - невежество сисадминов, которым лень букварь читнуть по Windows и которые ставять программистам бредовые задачи. |
| Автор: Snowy 8.2.2005, 08:21 | ||
Позволю себе такую наглость - не согласиться. Я конечно событиев не ловил, но очевидно, что просто при потере фокуса приложения из панели задач в трэй сворачиваться не будут, независимо от того, какое окно вылезло наверх. (Касается естественно только тех приложений, который на минимизацию лезут в трей). |
| Автор: Marriage 8.2.2005, 13:27 | ||
| 2 ДЫМ Короче, действительно щас флей пойдет. ПРосто, если по моему опыту
Если только так, тогда хорошо, без Б. ПРизнаю , что это подеюйствует. А если несколько -тогда хук на клаву - это не выход, ИМХО. |