喫茶XRAYトップページ

[スレッド全体
]

[8821] メモリカードスロットのドライブを無視するには返信 削除
2015/5/11 (月) 14:24:55 andy
以下のコードで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;

メモリーカードスロットのさしていないドライブを拾ってしまいます。
刺さっていないドライブは無視するようにしたいのですが
なにかいい方法はないでしょうか。
スロットのないパソコンは問題ありません。


[8822] Re:メモリカードスロットのドライブを無視するには返信 削除
2015/5/11 (月) 21:09:05 Mr.XRAY
▼ andyさん

> メモリーカードスロットのさしていないドライブを拾ってしまいます。
> 刺さっていないドライブは無視するようにしたいのですが
> なにかいい方法はないでしょうか。
> スロットのないパソコンは問題ありません。


フロッピーディスクは何かありましたね.
昔はよく話題になっていました.

QueryDosDevice で検出できるのかな ?


[8825] Re2:メモリカードスロットのドライブを無視するには返信 削除
2015/5/12 (火) 08:09:50 おかぽん
▼ Mr.XRAYさん
> フロッピーディスクは何かありましたね.
> 昔はよく話題になっていました.


FDであればGetVolumeInformationのようです。
http://www2.ttcn.ne.jp/tkky/Tips/Win32API/getvolumeinformation1.htm

ただし、CDとかでも利用できたけど、挿入されていないと応答に数秒待たされるとか
読んだ気がするのですが、ソースが・・・すぐには出てこない。
対策として、SHGetFileInfo を使えだったような・・・忘れました。


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82