![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как найти локальное имя по имени сетевого диска? [D6]
EternalWonderer © (2002-08-13 14:52:00)Имеем: путь типа \\NTserver\install.
Задача: проверить, подключен (maped) ли он уже на клиенте?
GetVolumeInformation не катит, поскольку возвращает только вторую часть пути - "install" ...
Filat (2002-09-04 12:36:00) [1]Спасибо !
Будем иметь ввиду на будушщее :)))))
EternalWonderer (2002-08-15 13:36:00) [2]Для интересующихся сообщаю решение:
Function GetLocalNameAssigned(NetName: String): String;
Var c : Array[1..26] of Char;
n : Integer;
VolumeName: array [0..MAX_PATH-1] of Char;
BufferLength: Cardinal;
begin
Result := "";
c:="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
BufferLength := MAX_PATH;
For n := 1 to 26 do
If (GetDriveType(PChar(c[n]+":\")) = DRIVE_REMOTE)
And (WNetGetConnection(PChar(String(c[n]+":")),VolumeName,BufferLength) = NO_ERROR)
And (ANSIUpperCase(NetName) = ANSIUpperCase(VolumeName)) Then Begin
Result := c[n] + ":";
Exit;
End;
End;
Удачи!
EternalWonderer (2002-08-14 09:07:00) [3]Господа мастера, неужели никто не решал подобную задачу?
В Explorer"е эти имена появляются (в виде "INSTALL на "NTServer" (G:)"), значит, их можно как-то "добыть"!
Function GetLocalNameAssignedDrive(NetName: String): String;
Var c : Array[1..26] of Char;
n : Integer;
begin
Result := "";
c:="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
For n := 1 to 26 do
If (GetDriveType(PChar(c[n]+":\")) = DRIVE_REMOTE)
And // здесь надо получить VolumeName в виде
// "\\NTServer\install" или хотя бы как-то иначе
And (NetName = VolumeName) Then Begin
Result := c[n] + ":";
Exit;
End;
End;
Заранее признателен за подсказку.