Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
1

История подключения флэшки.

26.04.2012, 23:55. Показов 1407. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всё работает и всё кажется отлично, но!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void __fastcall TForm1::WMDeviceChange( TMessage &Message ) {
    if ( Message.Msg == WM_DEVICECHANGE && Message.WParam == 0x8000 ) {
        char DiskLabel[MAX_PATH];
        WORD OldErrorMode;
        AnsiString dl;
        DWORD dr = GetLogicalDrives( );  // функция возвращает битовую маску
        for ( int x = 0; x < 26; x++ ) { // проходимся циклом по битам
            if ( ( dr >> x ) & 1 ) {     // узнаём значение текущего бита, если единица - диск с номером x есть
                dl = AnsiString( ( char )( 65 + x ) ) + "://"; // получаем литеру диска
                OldErrorMode = SetErrorMode( SEM_FAILCRITICALERRORS ); // убираем показ ошибок
                bool ready = DirectoryExists(dl); // пытаемcя открыть корневую директорию
                if (ready)
                {   // пытаемcя открыть корневую директорию
                    UINT DriveType = GetDriveType( dl.c_str( ) ); // получаем тип диска
                    if ( DriveType != DRIVE_CDROM && // исключаем CDROMы
                            DriveType != DRIVE_FIXED && // исключаем  HDD
                             DriveType != DRIVE_RAMDISK &&
                             DriveType != DRIVE_REMOTE &&
                             DriveType != DRIVE_NO_ROOT_DIR &&
                             DriveType != DRIVE_UNKNOWN)
                            {
                            Edit1->Text=dl;
 ShellExecute( Handle, "open", dl, NULL, NULL, SW_RESTORE );//ну или почти так(суть не в этом)[
если мы делаем так то -
Он откроет все флэшки подключенный на данный момент, а не последнюю подключенную.Как исправить?
Или по времени сравнивать их,и открыть последний подключенный...По букве не прокатит.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2012, 23:55
Ответы с готовыми решениями:

Определение подключения/отключения флэшки. Qt и WinAPI
Помогите пожалста победить проблему – требуется в Qt проге определять подкл./откл. флэшки. Написал...

Извлечение флэшки с программы которая запущена с той же флэшки
Пишу типа авторана для флэшки. И там я хочу написать код который-би безопасно извлекал флэшку....

История ICQ, Skype и история браузеров. Как экспортировать и где хранится?
Доброго времени суток. Требуется из телефона на базе ОС Андроид, а именно аппарат Lenovo 700i,...

Внутри флэшки ярлык флэшки
Добрый день! Уже не знаю который день внутри флэшки лежит ярлык на саму флэшку через который можно...

5
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
27.04.2012, 08:46 2
При подключении флэшки суйте ее серийник в стек, а когда надо открыть последнюю подключенную, берете последний серийник из стека и делаете по нему выборку из всех логический дисков.
1
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
27.04.2012, 20:20  [ТС] 3
Цитата Сообщение от BRcr Посмотреть сообщение
При подключении флэшки суйте ее серийник в стек, а когда надо открыть последнюю подключенную, берете последний серийник из стека и делаете по нему выборку из всех логический дисков.
Последний серийник, хм WMDeviceChange сканирует все флэшки причем формирует их по алфавиту..
А при подключении флэшки не извесно, какую букву будет иметь флэшка.(выше или ниже подключенной) как то так.
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
27.04.2012, 20:51 4
Какая разница, чего флэшка будет или не будет иметь? Список томов интересующего вас типа DRIVE_REMOVABLE изменился, в нем появился элемент, которого в нем доселе не было - это единственное, что должно волновать вас на этой стадии.

Программка запустилась, составила список томов, смонтированных в системе, и запомнила его. Программка получила оповещение WM_DEVICECHANGE об изменении конфигурации оборудования, составила список томов повторно, сравнила его с ранее сохраненным и, вуаля - вот она, искомая флэшка.
1
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
27.04.2012, 21:01  [ТС] 5
BRcr, что то я туплю как всегда
Код
27.04.2012 19:56:52  -  Подключен накопитель: (F://) 
27.04.2012 19:56:52  -  Подключен накопитель: (G://)
1 флэшка стояла в системе, 1 подключил...В логе появилось 2 записи.
Причём диск (G://) был подключен часа 2 назад....
Код использую что вверху.
WM_DEVICECHANGE сканирует все DRIVE_REMOVABLE и выводит всё.
Нужно сравнить, не подскажите как?
0
143 / 122 / 14
Регистрация: 10.10.2011
Сообщений: 366
Записей в блоге: 2
27.04.2012, 21:22 6
Цитата Сообщение от EdarGp Посмотреть сообщение
Или по времени сравнивать их,и открыть последний подключенный...По букве не прокатит.
посмотри тот проект что я скидывал в предыдущей твой теме
там я обошел эт следующим образом:
1) при первичном включении проги искал ВСЕ подключенное к компу в данный момент и выводится в верхнее мемо
2) как ток подключается флешка у меня организован поиск по тому что есть и выводит ток её данные в нижнее
или
допустим флеха стояла когда произошло включение проги, можн сделать следующее:
1) как только вытаскивают флешку над в мемко данные обновить и не добавлять туда
2) как ток снов вставляется флеха одной просто делай поиск этой флехе в мемо если её нет то добавь её туда

можн организовать через одну мемку или стринглист или любой др вид эмитированного списка...
0
27.04.2012, 21:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2012, 21:22
Помогаю со студенческими работами здесь

История человечества - это история огня?
У меня есть пара вопросов. 1. Вот древний человек добывал огонь с помощью трения. А сколько...

История открытых/созданных файлов в программе файлов (история), записывать в файл либо бд, или ещё как-то
Ребят, помогите нужно сделать историю открытых/созданных файлов в menustrip1 Как это сделать?...

Плагины для 1С Битому: "Избранное", история просмотров, история посещения
Всем здравствуйте. Ситуация следующая: я разрабатываю сайт годового отчета. Посмотрел отчеты других...

Настройка сетевого подключения по умолчанию в rashbian для подключения к сети интернет
Всем здравствуйте! На orange PI zero поднял ОС rashbian с необходимым ПО. Всё работает как надо. ...

Какое нужно оборудование для подключения вай фай, а также каковы условия самого подключения
Прошу прощения за столь глупый вопрос, но я в этом деле полный нуб, а где ещё можно спросить больше...

О восстановлении флэшки
Кто может - подскажите пожалуйста - где взять прогу Recovery my files версии 6.2 За ссылочку буду...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru