以下のコードでUSBのドライブを取得していますが
function FillFlashDriveList:string; //USBのドライブリスト
const
NameSize = 4;
VolumeCount = 26;
TotalSize = NameSize * VolumeCount;
var
Buff, Volume, DosDevice: String;
lpQuery: array [0..MAXCHAR - 1] of Char;
I, Count: Integer;
aa:string;
begin
SetLength(Buff, TotalSize);
Count := GetLogicalDriveStrings(TotalSize, @Buff[1]) div NameSize;
if Count = 0 then
RaiseLastOSError
else
for I := 0 to Count - 1 do
begin
Volume := PChar(@Buff[(I * NameSize) + 1]);
case GetDriveType(PChar(Volume)) of
DRIVE_REMOVABLE:
begin
Volume[3] := #0;
QueryDosDevice(PChar(Volume), @lpQuery[0], MAXCHAR);
Volume[3] := '\';
DosDevice := String(lpQuery);
if (DosDevice <> '\Device\Floppy0') and (DosDevice <> '\Device\Floppy1') then
if aa='' then aa:=Volume[1] else aa:=aa+','+Volume[1];
end;
end;
end;
Result:=aa;
end;
メモリーカードスロットのさしていないドライブを拾ってしまいます。
刺さっていないドライブは無視するようにしたいのですが
なにかいい方法はないでしょうか。
スロットのないパソコンは問題ありません。
|