const
FMIFS_FLOPPY = 8;
FMIFS_REMOVABLE = 11;
FMIFS_HARDDISK = 12;
function QuerySupportedMedia(DriveRoot: PWCHAR; out CurrentMedia: ULONG;
Unknown3: ULONG; out Unknown4: ULONG): BOOL; stdcall; external 'FMIFS.DLL';
procedure TForm1.Button1Click(Sender: TObject);
var
CurrentMedia: ULONG;
Unknown4: ULONG;
begin
if QuerySupportedMedia('A:', CurrentMedia, 1, Unknown4) then
ShowMessage(IntToStr(CurrentMedia))
else
ShowMessage('ERROR: ' + IntToStr(GetLastError()));
end;
Как программно отличить флоппи-диск от флешки.
Function GetFlashDisk:String;
var
w: dword;
Root: string;
i: integer;
begin
w := GetLogicalDrives;
Root := '#:\';
for i := 0 to 25 do
begin
-- Root[1] := Char(Ord('A') + i);
--- if (W and (1 shl i)) > 0 then
-------- if GetDriveType(Pchar(Root)) = DRIVE_REMOVABLE then
--------- GetFlashDisk:=Root;
---end;
end;
GetDriveType на MSDN.Если лень изучать всё,листни в конец статьи
GetLogicalDrives(НЕ GetLogicalDrivers) возвращает наличествующие в системе устройства,не более.Она не информирует о наличии диска/карты памяти/etc. в устройстве
GetLogicalDrives(НЕ GetLogicalDrivers) возвращает наличествующие в системе устройства,не более.Она не информирует о наличии диска/карты памяти/etc. в устройстве
Есть такая хорошая библиотека FMIFS.DLL в которой полезные функи для работы с дисками. форматирование, проверка, получение файловой системы. правда она незадокументирована. причем QuerySupportedMedia отрабатывает только когда дискета вставлена иначе GetLastError вернет ERROR_NOT_READY (21). пример на делфи.