![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Гость_Гость |
|
|||
|
Unregistered |
Добрые граждане очень нужно написать программу на Delphi которая при запуске бы закрывала все окна в винде. Учитывая Ваше непревзойденное мастерство, могу предположить, что такую процедурку будет написать крайне не сложно. Поможите пожалуйста!
Заранее огромное Вам спасибо!!! |
|||
|
||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 1 Всего: 137 |
Ты уверен, что хочешь закрыть ВСЕ окна?
Я бы такое сделать не рискнул Ну а если серьёзно, в ФАКе Vit'a (прикреплённая тема в форуме) есть получение всех окон (статья "Как определить какие приложения уже запущены?"). Имеется в виду, тех окон, что показываются по Ctrl-Alt-Del (список задач). Гасишь эти окна таким образом: GetWindowThreadProcessId (Wnd, pid); //Wnd - это оттуда, из функции, которая в статье. TerminateProcess (OpenProcess (PROCESS_TERMINATE, false, pid), 0); Добавлено @ 22:25 Точнее не окна гасишь, а процессы, соответствующие этим окнам. |
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: нет Всего: 61 |
Блин, а на кой это нужно?! Ведь ещё надо следить за тем, чтобы нужные процессы не убить по неосторожности...
|
|||
|
||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 1 Всего: 137 |
Pakshin A. S., не убъёшь. Смотри статью.
А вот на кой нужно - вопрос... Не знаю. |
|||
|
||||
| Гость_Гость |
|
|||
|
Unregistered |
Дайте пожалуйста линк на статью.
А нужно вот зачем. Дело в том, что возникла острая необходимость из Flash апликации, которая запущена на весь экран вырубить системный звук(именно системный, потому как звук конкретной флэшки регулируется из нее же элементарно), вот я и подумал, что напишу-ка я программу на Дельфях, которая закрывает все окна и вызову ее из Flash'a, тогда пользователь, свернув полноэкранную флашугу сможет спокойно кликнуть по значку звукового динамика в системном трее и убавить как ему хочется этот самый звук... А извращаться так нужно потому, что клавиатура пользователю с мышью недоступны - вместно них лишь сенсорный экран... |
|||
|
||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 1 Всего: 137 |
А зачем программы закрывать? Значок и так доступен же...
Наверняка можно решить проблему проще - опиши её поподробнее, ничего не понял. А статья в оффлайн ФАК. Оффлайн на то и оффлайн, что ссылки нету. Качать его весь тут: http://forum.vingrad.ru/index.php?showtopic=15409 Из некоторых соображений статью оттуда вырезать и вставлять сюда не хочу. |
|||
|
||||
| Гость_Гость |
|
|||
|
Unregistered |
Да нет же в том-то все и дело, что Flash апликация запущена в режиме full screen, то бишь совсем в полный экран - нет ничего на мониторе кроме окна самой флэшки, а значит и трея системного нет(он за основным окном анимации)... Проблема в том, что компьютер на кот. это все нужно делать стоит в таком деревянном ящике из которого торчит только сенсорный экран и больше ничего, то есть клава и мышь вообще-то говоря есть, но они тоже в этом ящике и пользователь к ним не имеет доступа, а может только пальцем в экран тыкать... Такие машины стоят во всяких общественных местах, например, в игровых залах вместо покерных автоматов обычные РС-шки с сенсорными экранами, запаянные в ящики. Кстати, уважаемый, dm9 не скажите в каком конкретном разделе находится эта статья в FAQ'е, потому как скачал я тут его, а вот пример найти никак не могу, поможите ламеру!
|
|||
|
||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 1 Всего: 137 |
А зачем закрывать все приложения? Достаточно свернуть флешку - и трей будет доступен.
Системные ф-ции и WinAPI -> Windows -> Процессы, потоки, память, задачи -> Как определить какие приложения уже запущены? |
|||
|
||||
| Гость_Гость |
|
|||
|
Unregistered |
Я так понимаю, что данную процедуру нужно проделать с каждим окном, встречающимся по ходу работы цикла, правильно? Только вот я не понимаю откуда я pid возьму? Именно на него компилятор ругается... Уж простите за нелепый вопрос. |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
свернуть
SendMessage(HWnd,WM_SYSCOMMAND,CS_MINIMIZE,0) развернуть SendMessage(HWnd,WM_SYSCOMMAND,CS_MAXIMIZE,0) //Wnd - это оттуда, из функции, которая в статье. Можно так сделать |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
В местсо pid попробуй напиши @mProcessID
|
|||
|
||||
| Гость_Гость |
|
|||
|
Unregistered |
Не выходит с @mProcessID - пишет: undeclared identifier
что в это статье имелось в виду под pid - process id? Я так понимаю, что никто так и не поможет мне закрыть все окна... |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 14 Всего: 112 |
Не поможем. Потому что это заведомо неправильный подход к решению задачи. Убить все окна и почти все процессы в системе - это круто! Что потом пользователь будет делать с пустым экраном ? Да он вообще ничего не сможет сделать, даже эту же громкость изменить...
Добавлено @ 10:02 Ладно, чтобы сам убедился, что ничего хорошего не выйдет...
PID (Process ID) получаешь вызовом GetWindowThreadProcessId (Wnd, pid); Эта функция смотрит - какому процессу принадлежит окно Wnd, а заносит ID этого процесса в pid. Если Pid не объявлен, то объяви как var pid : THandle; -------------------- С уважением, г-н Посол. |
|||
|
||||
| dm9 |
|
||||||||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 1 Всего: 137 |
Такие вещи уважаемый гость мог бы посмотреть сам в справочке... Вот в этой: Пуск->Программы->Borland Delphi 7->Help->MS SDK Help Files->Win32 SDK Reference Вместо этого:
поставь это:
Объявив var pid : THandle;
Закрываются только те приложения, которые есть в таксбаре. Добавлено @ 13:04 Кроме нашего приложения, конечно... |
||||||||
|
|||||||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 14 Всего: 112 |
Да и не в этом дело - кто же так жестоко поступает ? Не уж просто свернуть нельзя ? -------------------- С уважением, г-н Посол. |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |