Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.012 c
2-1208623339
Alexey
2008-04-19 20:42
2008.05.18
Как свернуть форму


2-1208717661
jahman
2008-04-20 22:54
2008.05.18
всё уменьшается в размере!


15-1207211804
БарЛог
2008-04-03 12:36
2008.05.18
Радиоканал на 2КМ


2-1208719740
worldmen
2008-04-20 23:29
2008.05.18
Загрузить с ini файла в переменную имена всех ключей


2-1208425578
VictoR407
2008-04-17 13:46
2008.05.18
Как удалить полосы прокрутки в компоненте treeview?




   Наверх