F1aSh
Гость
|
|
« : 07-05-2005 07:40 » |
|
Где почитать про работу с файлами и папками... Мне например надо найти все файлики с расширением .files (папочки где рисунки сохраненных страницек хранятся) и сделать их все невидимыми в той папке где хранится exe-шник проги... в общем, нужно побольше почитать про это...
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #1 : 07-05-2005 08:02 » |
|
Читай MSDN. Функции WinAPI FindFirstFile, FindNextFile, FindClose помогут тебе в поиске файлов и папок. Функции GetFileAttributes, SetFileAttributes помогут тебе в установке атрибутов файла.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
F1aSh
Гость
|
|
« Ответ #2 : 07-05-2005 08:38 » |
|
Спасибо, ато на rsdn'е мне вапче ниче не ответили =)
|
|
« Последнее редактирование: 20-12-2007 21:12 от Алексей1153++ »
|
Записан
|
|
|
|
F1aSh
Гость
|
|
« Ответ #3 : 08-05-2005 04:41 » |
|
хм... LPWIN32_FIND_DATAA h; if (FindFirstFile("fff.files", h) == S_OK ) cout << "ok" << endl; else cout << "no" << endl;
ашыпка.... Извините злобньго ламерюгу.... Но я не знаю как использовать структуру в кач. парамерта ф-ии... Вообще не представляю что это такое =(( "lpFindFileData [out] Pointer to the WIN32_FIND_DATA structure that receives information about the found file or subdirectory. "
Че значт out ? =)
|
|
|
Записан
|
|
|
|
LP
Помогающий
Offline
|
|
« Ответ #4 : 08-05-2005 10:15 » |
|
[out] значит что это результат работы функции. А что значит сделать их все невидимыми в той папке где хранится exe-шник проги Скрытыми что-ли??
|
|
|
Записан
|
Если эта надпись уменьшается, значит ваш монитор уносят
|
|
|
F1aSh
Гость
|
|
« Ответ #5 : 08-05-2005 10:52 » |
|
Ага. Скрытыми Не... ну скрытыми то я сделаю сам.... SetAttribute и нашел я константы эти, чтобы скрытыми сделать на allapi.net (иил com - не помню) Мне бы ответ получить на пост, который 4й тут =)
|
|
|
Записан
|
|
|
|
LP
Помогающий
Offline
|
|
« Ответ #6 : 08-05-2005 11:05 » |
|
LPWIN32_FIND_DATAA h; if (FindFirstFile("fff.files", h) == S_OK )//? cout << "ok" << endl; else cout << "no" << endl; FindFirstFile возвращает handle файла в случае успешного завершения, и INVALID_HANDLE_VALUE (т. е. -1) в случае ошибки. Кроме того твой указатель h ни на что не указывает
|
|
|
Записан
|
Если эта надпись уменьшается, значит ваш монитор уносят
|
|
|
F1aSh
Гость
|
|
« Ответ #7 : 08-05-2005 11:36 » |
|
А на что он ДОЛЖЕН указвать? И чтоза тип такой LPWIN32_FIND_DATAA ? Там вопрос чуть чуть пошире =) Объясните пожалуйста, если не в лом... и я не буду с такими глупыми вопросами больше приставать =))))
PS Рульз =)
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #8 : 08-05-2005 12:10 » |
|
Вот пример, который привели, когда разбирали тоже самое тут https://forum.shelek.ru/index.php/topic,4017.30.htmlHANDLE hFndF=FindFirstFile("c:\\*.*", &FindFile); DWORD Folder; if (hFndF!=INVALID_HANDLE_VALUE) { do { Folder=FindFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; if (!Folder) Memo1->Lines->Add(FindFile.cFileName ); } while (FindNextFile(hFndF,&FindFile)!=0); FindClose(hFndF); }
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
F1aSh
Гость
|
|
« Ответ #9 : 08-05-2005 12:18 » |
|
Спасибо. Буду разбираться! =)
|
|
|
Записан
|
|
|
|
LP
Помогающий
Offline
|
|
« Ответ #10 : 08-05-2005 13:59 » |
|
Попробовал написать твою программку, у меня вроде работает, хотя не исключено что где-нибудь что-нибудь напутал #include <windows.h> #include <conio.h> #include <shlwapi.h> #include <iostream>
using namespace std;
void copy_and_hide(LPCTSTR lpPath, LPCTSTR lpFileName);
int main() { TCHAR path[]="d:\\fff.files\\"; TCHAR anyfile[]="d:\\fff.files\\*.*"; WIN32_FIND_DATA w32fd; LPWIN32_FIND_DATA lpw32fd=&w32fd; HANDLE h = FindFirstFile(anyfile, lpw32fd); if(h==INVALID_HANDLE_VALUE) { cout<<"error"; return -1; } if(!(lpw32fd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) copy_and_hide(path, lpw32fd->cFileName); while(FindNextFile(h, lpw32fd)) { if(!(lpw32fd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) copy_and_hide(path, lpw32fd->cFileName); }
FindClose(h); getch(); return 0; }
void copy_and_hide(LPCTSTR lpPath, LPCTSTR lpFileName) {
TCHAR buffer[MAX_PATH]; GetCurrentDirectory(MAX_PATH, buffer); StrCat(buffer, "\\"); TCHAR path[MAX_PATH]; StrCpy(path, lpPath); CopyFile(StrCat(path, lpFileName), StrCat(buffer, lpFileName), FALSE); DWORD attr=GetFileAttributes(buffer); SetFileAttributes(buffer, attr | FILE_ATTRIBUTE_HIDDEN); cout<<buffer<<" is copied"<<endl; return; }
|
|
« Последнее редактирование: 08-05-2005 14:04 от LP »
|
Записан
|
Если эта надпись уменьшается, значит ваш монитор уносят
|
|
|
F1aSh
Гость
|
|
« Ответ #11 : 08-05-2005 14:39 » |
|
Ой спасиба! Огромное, просто! Мне очень пригодится... посидеть поразбираться... Низкий поклон!
|
|
|
Записан
|
|
|
|
F1aSh
Гость
|
|
« Ответ #12 : 10-05-2005 08:08 » |
|
Ага.... все файлы скрывает... =) Я чуть не испугался )) TCHAR path[]="C:\\Documents and Settings\\User\\My Documents\\"; TCHAR anyfile[]="C:\\Documents and Settings\\User\\My Documents\\*.files"; Мне нада папки скрыть на конче которых .files там че? Что то другое использовать.... Если вот так в проге заменить path[] и anyfile[] то ниче копироваться и скрываться не будет. Вопрос - почему?
|
|
|
Записан
|
|
|
|
LP
Помогающий
Offline
|
|
« Ответ #13 : 10-05-2005 17:34 » |
|
Ага.... все файлы скрывает... =) Я чуть не испугался )) TCHAR path[]="C:\\Documents and Settings\\User\\My Documents\\"; TCHAR anyfile[]="C:\\Documents and Settings\\User\\My Documents\\*.files"; Мне нада папки скрыть на конче которых .files там че? Что то другое использовать.... Если вот так в проге заменить path[] и anyfile[] то ниче копироваться и скрываться не будет. Вопрос - почему? Если так сделать то будут копироваться только файлы с расширением .files, а не папки. С вопросом как копировать папки (тем более с файлами) тебе придется обратиться к msdn, так как я не знаю такой функции (если она вообще есть ) Но можно например создать новую, а туда подряд скопировать файлы из исходной папки.
|
|
|
Записан
|
Если эта надпись уменьшается, значит ваш монитор уносят
|
|
|
F1aSh
Гость
|
|
« Ответ #14 : 10-05-2005 20:50 » |
|
Хммм.... Но у папки то можно аттрибут "Скрытый" выставлять.... Значит можно и программно как-то выставить. Буду копаться Спасибо тебе за помощь...
|
|
|
Записан
|
|
|
|
F1aSh
Гость
|
|
« Ответ #15 : 11-05-2005 08:46 » |
|
FILE_ATTRIBUTE_NORMAL TCHAR path[]="C:\\Documents and Settings\\User\\My Documents\\"; TCHAR anyfile[]="C:\\Documents and Settings\\User\\My Documents\\*.files"; скрываем все папочки с .files на конце
|
|
|
Записан
|
|
|
|
|