Питання # 1 331 …чення флешки до USB порту Ну наприклад я флешку встромляю, а прога мені як небудь
Спільнота програмістів Спілкування, допомога, обмін досвідом
Delphi.int.ru Expert
Інші розділи порталу
Перехід до питання:
Статистика за сьогодні:
Запитання:0 Відповіді:0 Міні-форуми:0
Кращі експерти
Запитання # 1 331
Вітаю! У мене виникло таке питання: як відстежити підключення флешки до USB порту? Ну наприклад я флешку встромляю, а прога мені як-небудь сигналізує. Заздалегідь дякую!
Відповідь #1. Відповідає експерт:Вадим К
Доброго дня, IlluminatI! Завдання ділитися на дві. 1- виявити, що додано пристрій. 2- дізнатися, що це саме флешка
1 вирішується дуже просто обробляємо подію WM_DEVICECHANGE. Для цього в private частині опису форми вставляємо код виду procedure WMDEVICECHANGE(var msg:TMessage); message WM_DEVICECHANGE; потім натискаємо Ctrl+Shift+C. Делфі згенерує обробник. Він буде викликатися, коли додається/видаляється якийсь пристрій. тепер треба визначити, додали чи видалили.
procedure TForm1.WMDeviceChange(var Msg: TMessage); begin if (Msg.wParam = DBT_DEVICEARRIVAL) then showmessage('Якийсь пристрій додано'); if (Msg.wParam = DBT_DEVICEREMOVECOMPLETE) then ShowMessage('видалено'); end; тепер залишилася друга частина. якщо до додавання нового пристрою і після складемо список доступних дисків, то можна визначити ім'я літери доданого пристрою. робиться це дуже просто - у циклі перебираємо букви від A до Z і за допомогою функції перевіряємо тип диска. процесок DiskType(c:char); begin case GetDriveType(c+':\') of 0: ShowMessage('Drive type cannot be determined'); 1: ShowMessage('The root directory does not exist'); DRIVE_REMOVABLE: ShowMessage('The disk can be removed'); DRIVE_FIXED: ShowMessage('The disk cannot be removed'); DRIVE_REMOTE: ShowMessage('The drive is remote (network) drive'); DRIVE_CDROM: ShowMessage('The drive is a CD-ROM drive'); DRIVE_RAMDISK: ShowMessage('Drive is a RAM disk'); end; end; цикл по літерах можна реалізувати так var c:char; begin for c := 'A' to 'Z' до DiskType(c); end;
Це заготівля коду. а саме додатки робіть самі:)