Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определить сетевой ли диск [D6, WinXP]


webpauk ©   (2007-03-27 12:19:00) 

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

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


SlymRO   (2007-03-30 10:09:00) [1]

' 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


Anatoly Podgoretsky   (2007-03-29 23:13:00) [2]


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

А почему нет?


Reindeer Moss Eater   (2007-03-28 13:51:00) [3]

gethostby name ('Z:\')?
бретт...


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


Rouse_   (2007-03-27 14:24:00) [4]

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


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

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


Reindeer Moss Eater   (2007-03-27 13:41:00) [6]

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


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

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


Rouse_   (2007-03-27 13:38:00) [8]

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;


tesseract   (2007-03-27 12:21:00) [9]

GetDriveTypeA.


Наверх

Титульная страница Поиск, карта сайта Написать письмо