Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.04 c
2-1194439289
novill
2007-11-07 15:41
2007.12.02
Как задать цвет выводимых символов в консольном приложении?


2-1194629978
IOrist
2007-11-09 20:39
2007.12.02
Как прогу убрать в фоновый режим


15-1194187576
lookin
2007-11-04 17:46
2007.12.02
Нужны советы по моноблоку Apple iMac 20"


15-1194252709
andreoman
2007-11-05 11:51
2007.12.02
программка фиксирующа обращение к порту ПК


15-1193307568
Валентин
2007-10-25 14:19
2007.12.02
смогу ли я быть программистом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский