Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2012, 10:32   #11
Andersen1313
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 68
По умолчанию

Все это очень замечательно, у меня тоже получилось, но надо то использовать форму PhysicalDriveN как мне получить этот самый N зная номер диска? или как извлечь номер из DriveComboBox если это возможно
Andersen1313 вне форума Ответить с цитированием
Старый 31.07.2012, 10:36   #12
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Ексклюзивный доступ к системному диску вам никто не даст. Надо использовать FILE_SHARE_READ | FILE_SHARE_WRITE
waleri вне форума Ответить с цитированием
Старый 31.07.2012, 10:40   #13
Andersen1313
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 68
По умолчанию

Цитата:
Ексклюзивный доступ к системному диску вам никто не даст. Надо использовать FILE_SHARE_READ | FILE_SHARE_WRITE
Это сейчас к чему было, извините не пойму?!?!
Andersen1313 вне форума Ответить с цитированием
Старый 31.07.2012, 10:40   #14
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

А как заполняется DriveComboBox?

Цитата:

Цитата:
Ексклюзивный доступ к системному диску вам никто не даст. Надо использовать FILE_SHARE_READ | FILE_SHARE_WRITE
Это сейчас к чему было, извините не пойму?!?!
Ну это немного запоздало просто. Имелось ввиду что:
Код:
HANDLE H = CreateFileW(L"\\\\.\\С:", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);
Открывает системный диск.

Поэтому, если в ComboBox-е имена дисков, то формируем строку "\\\\.\\С:" и вперед.

Что-то типа:
Код:
String drive = L"\\\\.\\"+DriveComboBox->Items->Strings[DriveComboBox->ItemIndex];
Знающий не говорит, говорящий не знает (С) Лао Цзы

Последний раз редактировалось Krok27; 31.07.2012 в 10:51.
Krok27 вне форума Ответить с цитированием
Старый 31.07.2012, 19:57   #15
Andersen1313
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 68
По умолчанию

Можно как нибудь настроить DriveComboBox чтобы он выводил только букву диска и двоеточие? а то у меня выводит в такой форме С: [] (накладно убирать все что после двоеточия, иногда в квадратных скобках стоит метка диска)
Andersen1313 вне форума Ответить с цитированием
Старый 31.07.2012, 20:21   #16
Andersen1313
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 68
По умолчанию

В общем добавил вот такую строчку убрал лишнее:

Код:
DriveOpen.Insert('\0',7);
В переменной DriveOpen=\\\\.\\C: (Должно быть так или \\.\C: - как я сначала понял что \\ - это типо один слеш, ну как \n и т.п.)..

И вот с таким DriveOpen у меня теперь ошибка:
Цитата:
ERROR_PATH_NOT_FOUND 3
The system cannot find the path specified.
Andersen1313 вне форума Ответить с цитированием
Старый 31.07.2012, 20:36   #17
Andersen1313
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 68
По умолчанию

Вот так пытаюсь открыть:

Код:
HANDLE hFile=CreateFile((const char*)DriveOpen.c_str(),...
Не знаю зачем нужно и (const char *) и .c_str, но иначе у меня компилятор ошибки выдает
Andersen1313 вне форума Ответить с цитированием
Старый 31.07.2012, 20:40   #18
Andersen1313
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 68
По умолчанию

CreateFileW - исправил
Andersen1313 вне форума Ответить с цитированием
Старый 31.07.2012, 23:12   #19
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

если CreateFileW, то надо wstring было применять.
каст обычно говорит что вы чтото не так сделали.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.08.2012, 08:21   #20
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Код:

HANDLE H = CreateFileW(DriveOpen.w_str(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);
Цитата:
В переменной DriveOpen=\\\\.\\C:
Так должно быть.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ Builder чтение из файла через пробел reeskblg Помощь студентам 2 14.12.2011 18:20
Секторы и кластеры. worp Свободное общение 4 14.09.2011 23:28
Битые кластеры hon Компьютерное железо 7 03.08.2011 00:32
С++ Builder - Чтение файла :( Davlet M Помощь студентам 7 27.08.2009 23:53
Чтение данных из файла Excel в C++Builder Max2114 C++ Builder 6 15.01.2009 11:32