Главная страница
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.034 c
15-1207461552
@!!ex
2008-04-06 09:59
2008.05.18
IDE для FPC с нормальным дебагером


4-1188546177
Ламака
2007-08-31 11:42
2008.05.18
Определение подключения устройства


3-1197038339
GlFox
2007-12-07 17:38
2008.05.18
Объединение данных из двух SQL-запросов


4-1188899278
Cj
2007-09-04 13:47
2008.05.18
Regedit DDE


2-1208239581
Антон Вл.
2008-04-15 10:06
2008.05.18
ehLib