Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Закрыть все окна! 
:(
    Опции темы
Гость_Гость
Дата 23.4.2004, 21:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Добрые граждане очень нужно написать программу на Delphi которая при запуске бы закрывала все окна в винде. Учитывая Ваше непревзойденное мастерство, могу предположить, что такую процедурку будет написать крайне не сложно. Поможите пожалуйста!

Заранее огромное Вам спасибо!!!
  Вверх
dm9
Дата 23.4.2004, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



Ты уверен, что хочешь закрыть ВСЕ окна? smile.gif
Я бы такое сделать не рискнул smile.gif Придётся много восстанавливать даже после перезагрузки smile.gif

Ну а если серьёзно, в ФАКе Vit'a (прикреплённая тема в форуме) есть получение всех окон (статья "Как определить какие приложения уже запущены?"). Имеется в виду, тех окон, что показываются по Ctrl-Alt-Del (список задач). Гасишь эти окна таким образом:

GetWindowThreadProcessId (Wnd, pid); //Wnd - это оттуда, из функции, которая в статье.
TerminateProcess (OpenProcess (PROCESS_TERMINATE, false, pid), 0);
Добавлено @ 22:25
Точнее не окна гасишь, а процессы, соответствующие этим окнам.
PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 24.4.2004, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Блин, а на кой это нужно?! Ведь ещё надо следить за тем, чтобы нужные процессы не убить по неосторожности...
PM   Вверх
dm9
Дата 24.4.2004, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



Pakshin A. S., не убъёшь. Смотри статью.
А вот на кой нужно - вопрос... Не знаю.
PM MAIL ICQ   Вверх
Гость_Гость
Дата 25.4.2004, 16:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Дайте пожалуйста линк на статью.
А нужно вот зачем. Дело в том, что возникла острая необходимость из Flash апликации, которая запущена на весь экран вырубить системный звук(именно системный, потому как звук конкретной флэшки регулируется из нее же элементарно), вот я и подумал, что напишу-ка я программу на Дельфях, которая закрывает все окна и вызову ее из Flash'a, тогда пользователь, свернув полноэкранную флашугу сможет спокойно кликнуть по значку звукового динамика в системном трее и убавить как ему хочется этот самый звук... А извращаться так нужно потому, что клавиатура пользователю с мышью недоступны - вместно них лишь сенсорный экран...
  Вверх
dm9
Дата 25.4.2004, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



А зачем программы закрывать? Значок и так доступен же...

Наверняка можно решить проблему проще - опиши её поподробнее, ничего не понял.

А статья в оффлайн ФАК. Оффлайн на то и оффлайн, что ссылки нету. Качать его весь тут:
http://forum.vingrad.ru/index.php?showtopic=15409
Из некоторых соображений статью оттуда вырезать и вставлять сюда не хочу.
PM MAIL ICQ   Вверх
Гость_Гость
Дата 26.4.2004, 01:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Да нет же в том-то все и дело, что Flash апликация запущена в режиме full screen, то бишь совсем в полный экран - нет ничего на мониторе кроме окна самой флэшки, а значит и трея системного нет(он за основным окном анимации)... Проблема в том, что компьютер на кот. это все нужно делать стоит в таком деревянном ящике из которого торчит только сенсорный экран и больше ничего, то есть клава и мышь вообще-то говоря есть, но они тоже в этом ящике и пользователь к ним не имеет доступа, а может только пальцем в экран тыкать... Такие машины стоят во всяких общественных местах, например, в игровых залах вместо покерных автоматов обычные РС-шки с сенсорными экранами, запаянные в ящики. Кстати, уважаемый, dm9 не скажите в каком конкретном разделе находится эта статья в FAQ'е, потому как скачал я тут его, а вот пример найти никак не могу, поможите ламеру!
  Вверх
dm9
Дата 26.4.2004, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



А зачем закрывать все приложения? Достаточно свернуть флешку - и трей будет доступен.

Системные ф-ции и WinAPI -> Windows -> Процессы, потоки, память, задачи -> Как определить какие приложения уже запущены?
PM MAIL ICQ   Вверх
Гость_Гость
Дата 27.4.2004, 19:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
GetWindowThreadProcessId (Wnd, pid); //Wnd - это оттуда, из функции, которая в статье.
TerminateProcess (OpenProcess (PROCESS_TERMINATE, false, pid), 0);

Я так понимаю, что данную процедуру нужно проделать с каждим окном, встречающимся по ходу работы цикла, правильно? Только вот я не понимаю откуда я pid возьму? Именно на него компилятор ругается... Уж простите за нелепый вопрос.
  Вверх
Guest
Дата 28.4.2004, 07:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











свернуть

SendMessage(HWnd,WM_SYSCOMMAND,CS_MINIMIZE,0)

развернуть

SendMessage(HWnd,WM_SYSCOMMAND,CS_MAXIMIZE,0)

//Wnd - это оттуда, из функции, которая в статье.

Можно так сделать

  Вверх
Guest
Дата 28.4.2004, 08:00 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











В местсо pid попробуй напиши @mProcessID
  Вверх
Гость_Гость
Дата 28.4.2004, 08:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Не выходит с @mProcessID - пишет: undeclared identifier
что в это статье имелось в виду под pid - process id? Я так понимаю, что никто так и не поможет мне закрыть все окна...
  Вверх
p0s0l
Дата 28.4.2004, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 14
Всего: 112



Не поможем. Потому что это заведомо неправильный подход к решению задачи. Убить все окна и почти все процессы в системе - это круто! Что потом пользователь будет делать с пустым экраном ? Да он вообще ничего не сможет сделать, даже эту же громкость изменить...

Добавлено @ 10:02
Ладно, чтобы сам убедился, что ничего хорошего не выйдет...
Цитата
Только вот я не понимаю откуда я pid возьму? Именно на него компилятор ругается... Уж простите за нелепый вопрос

PID (Process ID) получаешь вызовом
GetWindowThreadProcessId (Wnd, pid);
Эта функция смотрит - какому процессу принадлежит окно Wnd, а заносит ID этого процесса в pid.
Если Pid не объявлен, то объяви как var pid : THandle;



--------------------
С уважением, г-н Посол.
PM   Вверх
dm9
Дата 28.4.2004, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



Цитата
Если Pid не объявлен, то объяви как var pid : THandle;


Такие вещи уважаемый гость мог бы посмотреть сам в справочке...
Вот в этой: Пуск->Программы->Borland Delphi 7->Help->MS SDK Help Files->Win32 SDK Reference

Вместо этого:
Цитата
GetWindowText(Wnd, buff, sizeof(buff)); 
ListBox1.Items.Add(StrPas(buff));


поставь это:
Цитата
GetWindowThreadProcessId (Wnd, pid); //Wnd - это оттуда, из функции, которая в статье.
TerminateProcess (OpenProcess (PROCESS_TERMINATE, false, pid), 0);


Объявив var pid : THandle;



Цитата
Не поможем. Потому что это заведомо неправильный подход к решению задачи. Убить все окна и почти все процессы в системе - это круто! Что потом пользователь будет делать с пустым экраном ? Да он вообще ничего не сможет сделать, даже эту же громкость изменить...


Закрываются только те приложения, которые есть в таксбаре.
Добавлено @ 13:04
Кроме нашего приложения, конечно...
PM MAIL ICQ   Вверх
p0s0l
Дата 28.4.2004, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 14
Всего: 112



Цитата
Закрываются только те приложения, которые есть в таксбаре.
Ну это смотря каким способом он будет отыскивать окна...
Да и не в этом дело - кто же так жестоко поступает ? Не уж просто свернуть нельзя ?



--------------------
С уважением, г-н Посол.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0570 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.