![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
узнать букву USB-диска
batya-x © (2008-07-15 22:35:00)как узнать букву съёмного диска, после того как её вставили в usb порт
stas (2008-07-17 15:16:00) [1]Правильный$Вася (17.07.08 14:38) [12]
так опубликуйте альтернативный.
Правильный$Вася (2008-07-17 14:38:00) [2]
> Значит у тебя работать данный код небудет.
в топку такие коды
stas (2008-07-17 13:10:00) [3]Правильный$Вася (16.07.08 15:47) [9]
Значит у тебя работать данный код небудет.
Игорь Шевченко (2008-07-16 16:03:00) [4]
> Флешка это TDriveType = dtFloppy, но буква не 'A' и не
> 'B'
Я тебя разочарую - даже флоппи может быть не 'A' и не 'B'
Правильный$Вася (2008-07-16 15:47:00) [5]
> Флешка это TDriveType = dtFloppy
гибкая флэшка - это здорово
а почему флэшка неможет быть A, если у меня флопа совсем нет? хочу - назначу
stas (2008-07-16 15:11:00) [6]Тут пример как получить список дисков.
Флешка это TDriveType = dtFloppy, но буква не 'A' и не 'B'
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type TDriveType = (dtUnknown, dtNoDrive, dtFloppy, dtFixed, dtNetwork, dtCDROM,
dtRAM);
Procedure GetDriveLst (List:TStrings);
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
GetDriveLst (ListBox1.Items);
end;
Procedure GetDriveLst (List:TStrings);
var
DriveNum: Integer;
DriveChar: Char;
DriveType: TDriveType;
DriveBits: set of 0..25;
procedure AddDrive(const Name:string);
begin
List.Add(Name);
end;
begin
{ fill list }
//Clear;
Integer(DriveBits) := GetLogicalDrives;
for DriveNum := 0 to 25 do
begin
if not (DriveNum in DriveBits) then Continue;
DriveChar := Char(DriveNum + Ord('a'));
DriveType := TDriveType(GetDriveType(PChar(DriveChar + ':\')));
// Memo1.Lines.Add(DriveChar)
{ if TextCase = tcUpperCase then }
DriveChar := Upcase(DriveChar);
case DriveType of
dtFloppy: AddDrive (DriveChar+':\0');
dtFixed: AddDrive(DriveChar+':\1');
dtNetwork: AddDrive(DriveChar+':\2');
dtCDROM: AddDrive(DriveChar+':\3');
dtRAM: AddDrive(DriveChar+':\4');
end;
end;
end;
end.
Denis__ (2008-07-16 14:35:00) [7]Гугли. Я в своё время нагуглил.
KilkennyCat (2008-07-16 00:55:00) [8]по-подробнее не помню. помню, что это NT-имена устройств, вроде.
посмотрите это... там куча всего...
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
или информацию по QuereDosDevice();
(2008-07-16 00:45:00) [9]Удалено модератором
batya-x (2008-07-16 00:15:00) [10]что за глобал в реестре, по подробнее можно
KilkennyCat (2008-07-15 23:48:00) [11]в реестре, наверное, глобал, символьные имена... тогда можно отследить и вышеназванные особенности.
Игорь Шевченко (2008-07-15 22:50:00) [12]если на съемном диске несколько разделов то и буков может быть несколько.
Правильный$Вася (2008-07-15 22:37:00) [13]а если их несколько?
а иногда буква автоматом не назначается (вернее, попадает на занятую другим подключением, напрмер, замапленный сетевой диск)
ps а буквы вставляют?