Въпрос # 1 331 ... свързване на флаш устройство към USB порт Е, например, поставям флаш устройство, но програмата някак
Общност от програмисти Комуникация, помощ, обмяна на опит
Delphi.int.ru Expert
Други раздели на портала
Преминете към въпрос:
Статистика за днес:
Въпроси:0 Отговори:0 Мини форуми:0
Топ експерти
Въпрос № 1 331
Здравейте! Имам въпрос: как да проследя връзката на флашка към USB порт? Ами например, залепвам флашка и програмата някак ми сигнализира. Благодаря предварително!
Отговор №1. Експертни отговори:Вадим К
Здравейте илюминати! Задачата е разделена на две. 1- откриване, че е добавено устройство. 2- за да разберете какво точно е флашка
1 се решава много просто обработвайки събитието WM_DEVICECHANGE. За да направите това, в частната част на описанието на формуляра вмъкнете кода на формуляра procedure WMDEVICECHANGE(var msg:TMessage); съобщение WM_DEVICECHANGE; след това натиснете Ctrl+Shift+C. Delphi ще генерира манипулатор. Ще се извика, когато се добави/премахне устройство. Сега трябва да определим дали е добавен или премахнат.
процедура TForm1.WMDeviceChange(var Msg: TMessage); започнете if (Msg.wParam = DBT_DEVICEARRIVAL) then showmessage('Добавено е някое устройство'); if (Msg.wParam = DBT_DEVICEREMOVECOMPLETE) then ShowMessage('deleted'); край; Сега остава втората част. ако направим списък на наличните устройства преди добавяне на ново устройство и след това, можем да определим името на буквата на добавеното устройство. това се прави много просто - в цикъл преминаваме през буквите от А до Я и използваме функцията, за да проверим типа на този диск. процедура DiskType(c:char); begin case GetDriveType(c+':\') of 0: ShowMessage('Типът на устройството не може да бъде определен'); 1: ShowMessage('Главната директория не съществува'); DRIVE_REMOVABLE: ShowMessage('Дискът може да бъде премахнат'); DRIVE_FIXED: ShowMessage('Дискът не може да бъде премахнат'); DRIVE_REMOTE: ShowMessage('Устройството е отдалечено (мрежово) устройство'); DRIVE_CDROM: ShowMessage('Устройството е CD-ROM устройство'); DRIVE_RAMDISK: ShowMessage('Устройството е RAM диск'); край; край; Цикъл по буква може да се реализира по този начин var c:char; започнете за c := 'A' до 'Z' направете DiskType(c); край;
Това са кодови фрагменти. направете приложенията сами :)