Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Давид
Программист 1С
857 / 645 / 187
Регистрация: 03.03.2009
Сообщений: 1,154
1

Закрыть папку (проводник) программно

03.09.2014, 13:51. Просмотров 1523. Ответов 10
Метки нет (Все метки)

Всем привет!
Задача - закрыть папку программным путем.

Пробовал по заголовку

Delphi
1
2
3
4
procedure TForm1.Button1Click(Sender: TObject);
begin
  postmessage(FindWindow(nil, PChar(Edit1.Text)), SW_QUIT ,1,0);
end;
Результат действует, но только для приложений.

Заранее благодарен за ответы:

Добавлено через 19 минут
Такой вариант тоже подошел только к приложениям

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Const
ReclamaName : String = 'Реклама' ; // имя папки
TimeInterval : Integer = 500; // Интервал, с которым будем проверять наличие окон
 
function EnumCloseProc (Wd: HWnd; Param: LongInt): Boolean; stdcall;
Var
Nm:Array[0..255] of Char; // буфер для имени
zName:String;
Begin
GetWindowText(Wd,Nm,255); // считываем текст заголовка окна
ZName:=AnsiUpperCase(String(Nm));
If Pos(ReclamaName,zName)<>0 then SendMessage(WD,WM_SYSCOMMAND,SC_CLOSE,0);
EnumProc := TRUE; // продолжаем перебирать все окна системы.
end;
 
procedure Tform1.Timer1Timer(Sender: TObject); // будем проверять по таймеру…
begin
Timer1.Interval:= TimeInterval; // установим время до следующего вызова
EnumWindows (@EnumCloseProc, 0); // отрабатываем закрытие окон.
end;
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.09.2014, 13:51
Ответы с готовыми решениями:

Как узнать папку, с которой сейчас работает проводник
Кто-нибудь знает как получить путь к папке с которой сейчас работает проводник. То есть найти окно...

Закрыть папку открытую в проводнике
Подскажите, кто может, как программно закрыть папку открытую в проводнике

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

Как программно создать папку
Как программно создать папку и текстовый файл в ней

Программно найти папку с java
Здравствуйте! Есть вопрос,как можно программно определить папку в которую установлена java. ...

10
droider
Universal
Эксперт Pascal/Delphi
4537 / 2545 / 810
Регистрация: 04.10.2012
Сообщений: 9,272
03.09.2014, 15:37 2
Цитата Сообщение от Давид Посмотреть сообщение
действует, но только для приложений
Вы о чем?
0
Давид
Программист 1С
857 / 645 / 187
Регистрация: 03.03.2009
Сообщений: 1,154
04.09.2014, 07:18  [ТС] 3
droider, Как я написал выше, делал по заголовкам.
У каждого окна есть свой заголовок, т.е. название, будь то папка, файл или приложение.
Запущу блокнот, пропишу в Edit1 - Блокнот, кнопку нажму - закроется!
Запущу Диспетчер задач Windows - пропишу в Edit - закроется!
Запускаю любой другой проект Delphi - прописываю, закрывается!
Запускаю MS Excel - прописываю Книга1-Microsoft Excel - закрывается!
Открываю папку, вверху заголовок - прописываю и никак.

Тема до сих пор актуальна...
0
droider
Universal
Эксперт Pascal/Delphi
4537 / 2545 / 810
Регистрация: 04.10.2012
Сообщений: 9,272
04.09.2014, 09:59 4
Лучший ответ Сообщение было отмечено Давид как решение

Решение

Цитата Сообщение от Давид Посмотреть сообщение
Открываю папку, вверху заголовок - прописываю и никак
попробуйте тогда
Delphi
1
SendMessage(FindWindow(nil, Pchar(Edit1.Text)), WM_CLOSE, 0, 0);
1
04.09.2014, 09:59
NotBeginner
173 / 160 / 71
Регистрация: 22.02.2013
Сообщений: 1,770
Записей в блоге: 2
04.09.2014, 10:16 5
Цитата Сообщение от droider Посмотреть сообщение
Открываю папку, вверху заголовок
а где у папки заголовок? что то я не вижу
0
droider
Universal
Эксперт Pascal/Delphi
4537 / 2545 / 810
Регистрация: 04.10.2012
Сообщений: 9,272
04.09.2014, 10:26 6
NotBeginner, вообще-то, это не мое сообщение. Открой папку, вверху ее название - заголовок, который ТС задает через текстовое поле.
0
NotBeginner
173 / 160 / 71
Регистрация: 22.02.2013
Сообщений: 1,770
Записей в блоге: 2
04.09.2014, 10:34 7
folder.jpg
что то нету заголовка.
0
Puporev
Модератор
58588 / 44484 / 30715
Регистрация: 18.05.2008
Сообщений: 106,570
04.09.2014, 10:39 8
NotBeginner, Если ты решил потроллить, то завязывай.
1
droider
Universal
Эксперт Pascal/Delphi
4537 / 2545 / 810
Регистрация: 04.10.2012
Сообщений: 9,272
04.09.2014, 10:57 9
Лучший ответ Сообщение было отмечено Давид как решение

Решение

Цитата Сообщение от NotBeginner Посмотреть сообщение
что то нету заголовка
бывает (все претензии к Биллу)
1
Изображения
Тип файла: jpg tmp dir.jpg (69.7 Кб, 23 просмотров)
Давид
Программист 1С
857 / 645 / 187
Регистрация: 03.03.2009
Сообщений: 1,154
04.09.2014, 11:02  [ТС] 10
droider,
Чуть подправил твою идею, в целом вышло так:
Delphi
1
2
3
4
5
6
procedure TForm1.Button1Click(Sender: TObject);
Var HD:HWnd;
begin
    HD:=FindWindow(nil, PChar(Edit1.Text));
    Postmessage(HD,WM_SYSCOMMAND,SC_CLOSE,0);
end;
Спасибо большое!
0
droider
Universal
Эксперт Pascal/Delphi
4537 / 2545 / 810
Регистрация: 04.10.2012
Сообщений: 9,272
04.09.2014, 11:03 11
Давид, у меня вышеприведенный код нормально отработал и в отношении каталогов. Удачи!
1
04.09.2014, 11:03
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2014, 11:03

Программно запретить иконки 'Закрыть', 'Свернуть' и 'Развернуть' в заголовке формы
Требуется программно запретить(сделать неактивными, недоступными) иконки 'Закрыть', 'Свернуть' и...

Как программно открыть папку или запустить файл
Добрый день, форумчане. Как написать программу, которая будет открывать браузер или &quot;Мой...

Как закрыть окно MessageBox программно в скрытой форме без закрытия программы
Я скачал исходники многопользовательского чата и решил их переделать под другие цели. Отправка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.