Advertisement
altervisi0n

Untitled

Dec 10th, 2024
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. #ifndef FILE_MANAGER_H
  2. #define FILE_MANAGER_H
  3.  
  4. #include <windows.h>
  5. #include <shlobj.h>
  6. #include <iostream>
  7.  
  8. // Функция для выбора директории
  9. void select_directory(wchar_t* selectedPath) {
  10. BROWSEINFOW bi = { 0 };
  11. bi.lpszTitle = L"Выберите директорию";
  12. LPITEMIDLIST pidl = SHBrowseForFolderW(&bi);
  13. if (pidl) {
  14. SHGetPathFromIDListW(pidl, selectedPath);
  15. }
  16. else {
  17. std::wcerr << L"[ERROR] Директория не выбрана.\n";
  18. }
  19. }
  20.  
  21. // Функция для выбора файла
  22. void select_file(wchar_t* selectedPath) {
  23. OPENFILENAMEW ofn = { 0 };
  24. wchar_t fileName[MAX_PATH] = L"";
  25.  
  26. ofn.lStructSize = sizeof(OPENFILENAMEW);
  27. ofn.lpstrFile = fileName;
  28. ofn.nMaxFile = MAX_PATH;
  29. ofn.lpstrFilter = L"Все файлы\0*.*\0";
  30. ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
  31.  
  32. if (GetOpenFileNameW(&ofn)) {
  33. wcscpy_s(selectedPath, MAX_PATH, ofn.lpstrFile);
  34. }
  35. else {
  36. std::wcerr << L"[ERROR] Файл не выбран.\n";
  37. }
  38. }
  39.  
  40. // Функция для создания директории, если она не существует
  41. bool CreateDirectoryIfNotExist(const wchar_t* dirPath) {
  42. DWORD dwAttrib = GetFileAttributesW(dirPath);
  43.  
  44. if (dwAttrib == INVALID_FILE_ATTRIBUTES || !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY)) {
  45. if (CreateDirectoryW(dirPath, NULL)) {
  46. std::wcout << L"[INFO] Директория успешно создана: " << dirPath << L"\n";
  47. return true;
  48. }
  49. else {
  50. std::wcerr << L"[ERROR] Не удалось создать директорию: " << dirPath << L"\n";
  51. return false;
  52. }
  53. }
  54. return true;
  55. }
  56.  
  57. #endif // FILE_MANAGER_H
  58.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement