Текущий архив: 2008.05.18;
Скачать: CL | DM;
ВнизПодключен-ли сетевой диск? Найти похожие ветки
← →
samalex (2008-04-07 15:12) [0]Уважаемые знатоки!!!
Как узнать подключен ли сейчас сетевой диск с заданным именем?
Знаю, что нужно использовать фунцию WNetGetConnection. Но как там параметры ставить? Может, кто скинет примерчик кода...
Заранее благодарен.
← →
БарЛог © (2008-04-07 15:28) [1]findfirst в заданном диске.
Правда, работает только если диск непустой :)
← →
DrPass © (2008-04-07 15:40) [2]
> WNetGetConnection
Я бы через GetLogicalDrives + GetDriveType сделал, это проще
← →
samalex (2008-04-07 15:45) [3]
> БарЛог © (07.04.08 15:28) [1]
> findfirst в заданном диске.
> Правда, работает только если диск непустой :)
Работает, жаль, что с пустым диском не пройдет.
← →
samalex (2008-04-07 15:50) [4]
> DrPass © (07.04.08 15:40) [2]
>
> > WNetGetConnection
>
> Я бы через GetLogicalDrives + GetDriveType сделал, это проще
Извините, не понял, как реализовать?
GetLogicalDrives - выдает текущий диск
GetDriveType - тип диска
← →
БарЛог © (2008-04-07 15:51) [5]samalex (07.04.08 15:45) [3]
Тогда я бы попытался создать файл и посмотреть на код ошибки при:
- если диск не подключен
- если диск подключен, но нет прав на запись
имхо, коды будут разниться.
← →
Rouse_ © (2008-04-07 15:54) [6]
> GetLogicalDrives - выдает текущий диск
Выдает список текущих дисков
> GetDriveType - тип диска
угу, если вернет DRIVE_REMOTE, то значит сетевой. Точный путь узнать можно через QueryDosDevice()
← →
Rouse_ © (2008-04-07 15:55) [7]упс... первое с GetLogicalDriveStrings перпутал :)
← →
clickmaker © (2008-04-07 15:56) [8]
> WNetGetConnection. Но как там параметры ставить?
LocalName, RemoteName ни о чем не говорят?
← →
DrPass © (2008-04-07 16:20) [9]
> упс... первое с GetLogicalDriveStrings перпутал :)
Все верно, GetLogicalDrives тоже выдает список всех текущих дисков, в виде битовой карты.
← →
samalex (2008-04-07 16:41) [10]В итоге сделал:
procedure TForm1.Button10Click(Sender: TObject);
var
buffer : array[0..250] of char;
length, i : integer;
begin
length:=GetLogicalDriveStrings(sizeof( buffer), buffer);
for i:=1 to length do
if buffer[i-1]=#0 then buffer[i-1]:=#10;
Memo1.Lines.Text:=StrPas(buffer);
end;
Может, коряво, но работает. Всем спасибо зп помощь. Не понял только, почему каждый 4 символ #0 ???
← →
clickmaker © (2008-04-07 16:43) [11]
> почему каждый 4 символ #0 ???
потому что хелп читать надо
lpBuffer
[out] Pointer to a buffer that receives a series of null-terminated strings, one for each valid drive in the system, plus with an additional null character. Each string is a device name.
← →
DrPass © (2008-04-07 16:52) [12]
> Может, коряво, но работает
Во-первых, не забудь про GetDriveType - диск-то может быть не сетевым. Например, воткнули флешку, и она себе зацапала имя того диска, пока он был не подключен.
Во-вторых, через GetLogicalDrives может быть не так коряво :)
← →
samalex (2008-04-07 16:52) [13]Да, действительно. Спасибо...
Страницы: 1 вся ветка
Текущий архив: 2008.05.18;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.052 c