Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.024 c
2-1208758852
Vudu
2008-04-21 10:20
2008.05.18
Как преобразовать char в integer


15-1207295964
Kolan
2008-04-04 11:59
2008.05.18
Посоветуйте IDE для руби.


3-1197115789
Gunek
2007-12-08 15:09
2008.05.18
Ошибка при использовании dbchart


15-1207160212
Cyrax
2008-04-02 22:16
2008.05.18
Как из Siemens A62 получить модем для GPRS-интернета...


2-1208423516
Зоо
2008-04-17 13:11
2008.05.18
Выделить строку в DBGRIDEX