|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Чистка флэшки |
|
|
C/C++ - Чистка флэшки
|
|
Старожил Сообщения: 222 |
Всем привет. Мне нужно по средствам с++ builder написать программу, которая будет при подключении съемных устройств, в автоматическом режиме, удалять все файлы допустим *.mp3
Возможно ли это? |
|
|
Отправлено: 05:44, 18-02-2012 |
|
ИО Капитана Очевидности Сообщения: 5387
|
Профиль | Отправить PM | Цитировать Возможно.
И даже средствами самой операционной системы - с использованием командных файлов и скриптов ![]() |
|
------- Отправлено: 17:44, 18-02-2012 | #2 |
|
Старожил Сообщения: 222
|
Профиль | Отправить PM | Цитировать в командной строке у меня давно уже вышло
но при условии что батник на самой флэшке или указан путь к флэшке, а вот что бы автоматом при вставке флэшки удаляла с неё, такое вот не выходит... с WM_DEVICECHANGE нужно разобраться... |
|
------- Последний раз редактировалось ddv122, 19-02-2012 в 21:12. Отправлено: 17:52, 18-02-2012 | #3 |
|
Старожил Сообщения: 222
|
Профиль | Отправить PM | Цитировать Как я понимаю нужен обработчик событий WM_DEVICECHANGE который будет опрашивать диски с помощью функции GetLogicalDrives, функцией GetDriveType проверять тип, если DRIVE_REMOVABLE -> то съемный диск) и удалять с него файл...Но не получается, может есть варианты у вас?
Вот код Но результат в ComboBox1 и я не знаю как от туда вытащить имя флэшки и применить его в system() |
|
Отправлено: 23:50, 19-02-2012 | #4 |
|
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать |
|
|
Отправлено: 01:05, 20-02-2012 | #5 |
|
Старожил Сообщения: 222
|
Профиль | Отправить PM | Цитировать А еще не подскажите как реализовать удаление папок с файла *.txt(там их список) или с memo
|
|
------- Отправлено: 15:31, 20-02-2012 | #6 |
|
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Цитата ddv122:
|
|
|
------- Отправлено: 15:50, 20-02-2012 | #7 |
|
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 16:02, 20-02-2012 | #8 |
|
Старожил Сообщения: 222
|
Профиль | Отправить PM | Цитировать Вот что я хотел
{
char s[100];
strcpy(s, Edit1->Text.c_str());
AnsiString DirPath = s, foldername;
TStringList* ToDel = new TStringList();
ToDel->LoadFromFile("Spisok.txt");
int Count= ToDel ->Count;
for (int i = 0; i < Count; i++)
if (ToDel)
{
AnsiString DirName= ToDel->Strings[i];
RemoveDir(s+DirName);
AnsiString FileName= ToDel->Strings[i];
DeleteFile(s+FileName);
}
}
Удалять *.exe файл, если есть одноименная скрытая папка |
|
Последний раз редактировалось ddv122, 20-02-2012 в 23:23. Отправлено: 16:55, 20-02-2012 | #9 |
|
ИО Капитана Очевидности Сообщения: 5387
|
Профиль | Отправить PM | Цитировать Цитата ddv122:
Если внезапно на флешке окажется файл с именем длиннее ста символов, ваша программа будет выдавать очень интересные и совершенно непредсказуемые ошибки. Особенно непонятно, зачем вы используете массив char, периодически чередуя его с объектами AnsiString? Цитата ddv122:
![]() {
AnsiString DirPath = Edit1->Text; // И без всяких символьных извращений
TStringList* ToDel = new TStringList();
ToDel->LoadFromFile("Spisok.txt");
AnsiString ObjectName;
// Если порядок цикла не важен, проще задавать его от максимума к нулю:
// сравнение значения с нулём выполняется быстрее, нежели сравнение двух значений,
// да и переменную лишнюю создавать не нужно
// Запомните: чем проще программа, тем меньше в ней ошибок :)
for (int i = ToDel ->Count-1; i >= 0; i--)
{
ObjectName = DirPath+ToDel->Strings[i];
if (...) //проверка, есть ли каталог ObjectName - увы, имя функции не помню
RemoveDir (ObjectName);
elseif (...) // проверка, есть ли файл ObjectName - увы, имя функции не помню
DeleteFile (ObjectName);
}
delete ToDel; // Не забываем про удаление объектов, созданных командой new
|
||
|
------- Отправлено: 03:07, 21-02-2012 | #10 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Разное - Чистка системников | stranges | Прочее железо | 22 | 14-11-2011 17:01 | |
| Разное - Чистка ОС XP | inline | Microsoft Windows 2000/XP | 4 | 06-05-2011 07:11 | |
| Принтер - Чистка принтера | ReAL | Прочее железо | 10 | 25-03-2011 15:31 | |
| Чистка линз | crowlik | Оптические приводы | 18 | 21-04-2009 11:23 | |
| Чистка рееестра | bona | Программное обеспечение Windows | 6 | 17-02-2008 05:57 | |
|