Вниз
Скачать: 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.47 MB
Время: 0.013 c
2-1208591575
IOrist
2008-04-19 11:52
2008.05.18
Триггер в Ms SQL 2005


15-1204709993
@!!ex
2008-03-05 12:39
2008.05.18
Будьте бдительны!


15-1207558304
GanibalLector
2008-04-07 12:51
2008.05.18
Subscribe.Ru (рассылка от Мастера DELPHI)


2-1208614889
Лунатик
2008-04-19 18:21
2008.05.18
Анимация


2-1208872290
@!!ex_
2008-04-22 17:51
2008.05.18
Как задать число в двоичной системе исчисления?




   Наверх