Вниз
Скачать: 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-1208280971
random(1024)
2008-04-15 21:36
2008.05.18
Ошибка во время выполнения потока...


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


2-1208282390
lewka-serdceed
2008-04-15 21:59
2008.05.18
Ошибка "Invalid variant operation"


15-1207118358
Рамиль
2008-04-02 10:39
2008.05.18
Так, признавайтесь..


9-1170231355
akaValerius
2007-01-31 11:15
2008.05.18
Указатель на часть массива




   Наверх