Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.02;
Скачать: CL | DM;

Вниз

Определить сетевой ли диск   Найти похожие ветки 

 
webpauk   (2007-03-27 12:19) [0]

есть
Dir="Z:\Корпоративный отдел\KVL\Сейчас\Запросы\Коника\";

есть ли возможность определить, что Z - сетевой диск.
если да, то интересует как узнать IP адрес этого диска?


 
tesseract ©   (2007-03-27 12:21) [1]

GetDriveTypeA.


 
Rouse_ ©   (2007-03-27 13:38) [2]

function GetDrivesData(NotNT: Boolean): String;

 function GetFreeSpace(Disk: String): String;
 var
   FA, TS: Int64;
   TF: TLargeInteger;
 begin
   if GetDiskFreeSpaceEx(PChar(Disk), FA, TS, @TF) then
     Result := IntToStr(Floor((TF / 1024) / 1024)) + " Мб"
   else
     Result := "не определено";
 end;

 function GetDriveFSName(Volume: String) : String;
 var
   VolumeName, FileSystemName: array [0..MAX_PATH - 1] of Char;
   VolumeSerialNo, MaxComponentLength, FileSystemFlags: LongWord;
 begin
   Result := "";
   if GetVolumeInformation(PChar(Volume), VolumeName, MAX_PATH, @VolumeSerialNo,
     MaxComponentLength, FileSystemFlags, FileSystemName, MAX_PATH) then
     Result :=  String(FileSystemName)
   else
     Result := "";
 end;

const
 NameSize = 4;
 VolumeCount = 26;
 TotalSize = NameSize * VolumeCount;
 Report = "  - Диск: %s %s"#13#10;
 ReportFull = "  - Диск: %s %s, файловая система: %s, свободно: %s"#13#10;
var
 Buff, Volume, svQuery: String;
 lpQuery: array [0..MAXCHAR - 1] of Char;
 I, Count: Integer;
begin
 SetLength(Buff, TotalSize);
 Count := GetLogicalDriveStrings(TotalSize, @Buff[1]) div NameSize;
 if Count = 0 then
   Result := "Диски не определены"
 else
   Result := "";
   for I := 0 to Count - 1 do
   begin
     Volume := PChar(@Buff[(I * NameSize) + 1]);
     case GetDriveType(PChar(Volume)) of
       DRIVE_UNKNOWN: Result := Result + (Format(Report, [Volume,
         "Тип диска не определен."]));
       DRIVE_NO_ROOT_DIR:
         Result := Result + (Format(Report, [Volume,
           "Корневой путь диска не верен. Тип диска не определен."]));
       DRIVE_REMOVABLE:
       begin
         Volume[3] := #0;
         QueryDosDevice(PChar(Volume), @lpQuery[0], MAXCHAR);
         Volume[3] := "\";
         if String(lpQuery) = "\Device\Floppy0" then
           Result := Result + (Format(Report, [Volume, "Привод гибких дисков."]))
         else
           if String(lpQuery) = "\Device\Floppy1" then
             Result := Result + (Format(Report, [Volume, "Привод гибких дисков."]))
           else
             Result := Result + (Format(ReportFull,
               [Volume, "Флэш накопитель",
               GetDriveFSName(Volume), GetFreeSpace(Volume)]));
       end;
       DRIVE_FIXED:
       begin
         if NotNT then
         begin
           Volume[3] := #0;
           QueryDosDevice(PChar(Volume), @lpQuery[0], MAXCHAR);
           Volume[3] := "\";
           if Length(String(lpQuery)) = 2 then
             Result := Result + (Format(ReportFull, [Volume,
               "Логический", GetDriveFSName(Volume), GetFreeSpace(Volume)]))
           else
             Result := Result + (Format(Report, [Volume,
               "Диск является отображением папки находящейся по адресу: "" +
                 String(lpQuery) + """]));
           Continue;
         end;
         Volume[3] := #0;
         QueryDosDevice(PChar(Volume), @lpQuery[0], MAXCHAR);
         Volume[3] := "\";
         if Copy(String(lpQuery), 1, 22)  = "\Device\HarddiskVolume" then
           Result := Result + (Format(ReportFull, [Volume,
             "Логический", GetDriveFSName(Volume), GetFreeSpace(Volume)]))
         else
           Result := Result + (Format(Report, [Volume,
             "Диск является отображением папки находящейся по адресу: "" +
               Copy(String(lpQuery), 5, Length(String(lpQuery))) + """]));
       end;
       DRIVE_REMOTE:
       begin
         Volume[3] := #0;
         QueryDosDevice(PChar(Volume), @lpQuery[0], MAXCHAR);
         Volume[3] := "\";
         svQuery := Copy(String(lpQuery), 29, Length(String(lpQuery)));
         Delete(svQuery, 1, Pos("\", svQuery));
         Result := Result + (Format(ReportFull, [Volume,
           "Удаленный (сетевой) диск. Сетевой путь: "\\" + svQuery + """,
           GetDriveFSName(Volume), GetFreeSpace(Volume)]));
       end;
       DRIVE_CDROM:
         Result := Result + (Format(Report, [Volume,"CD-ROM."]));
       DRIVE_RAMDISK:
         Result := Result + (Format(ReportFull, [Volume, "RAM диск.",
           GetDriveFSName(Volume), GetFreeSpace(Volume)]));
     else
       Result := (Format(Report, [Volume, "Тип диска не определен."]));
     end;
   end;
end;


 
webpauk   (2007-03-27 13:39) [3]

скорее GetDriveType(PChar(ExtractFileDrive(Dir)))
как узнать IP адрес этого диска?


 
Reindeer Moss Eater ©   (2007-03-27 13:41) [4]

гетхостбайнейм?


 
webpauk   (2007-03-27 14:19) [5]

gethostbyname("Z:\")?
бретт...


 
Rouse_ ©   (2007-03-27 14:24) [6]

гетхостбайнейм для svQuery из этой строчки:
        Result := Result + (Format(ReportFull, [Volume,
          "Удаленный (сетевой) диск. Сетевой путь: "\\" + svQuery + """,


 
Reindeer Moss Eater ©   (2007-03-28 13:51) [7]

gethostbyname("Z:\")?
бретт...


а что, в конце марта "Z:\" вдруг стало именем хоста?


 
Anatoly Podgoretsky ©   (2007-03-29 23:13) [8]


> а что, в конце марта "Z:\" вдруг стало именем хоста?

А почему нет?


 
SlymRO ©   (2007-03-30 10:09) [9]

" VBScript.
" netdrives.vbs
Option Explicit
Dim WshNetwork,NetworkDrives,i
Set WshNetwork = CreateObject("WScript.Network")
Set NetworkDrives = WshNetwork.EnumNetworkDrives
For i = 0 to NetworkDrives.Count - 1 Step 2
 WScript.StdOut.WriteLine NetworkDrives.Item(i) & " = " & NetworkDrives.Item(i+1)
Next



Страницы: 1 вся ветка

Текущий архив: 2007.12.02;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.023 c
15-1194098631
Vendict
2007-11-03 17:03
2007.12.02
h -> pas


1-1189455742
Герой
2007-09-11 00:22
2007.12.02
Как нажать на запрещеную кнопку


11-1178365523
Даддитс
2007-05-05 15:45
2007.12.02
Пример работы с компонентом XXSocket


1-1189609395
sshaitan
2007-09-12 19:03
2007.12.02
Перевод кодов символов формата Unicode в строку


2-1194357802
pasha_golub
2007-11-06 17:03
2007.12.02
Ошибка при вызове SHFileOperation после ForceDirectories