Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.23;
Скачать: CL | DM;

Вниз

Подключение сетевого ресурса   Найти похожие ветки 

 
Lola ©   (2002-11-21 14:28) [0]

Подключаю сетевой ресурс с помощью WNetConnectionDialog. Как теперь мне вернуть выбранный юзером маршрут в виде строки, чтобы его можно было сохранить, и, в следующий раз, подключаться по нему автоматом? Если есть другие предложения, буду рада их услышать. Спасибо.


 
OutSidEr   (2002-11-21 14:58) [1]

Используй WNetConnectionDialog1 - там параметром передается указатель на структуру CONNECTDLGSTRUCT, в которой есть все, что нужно.


 
Lola ©   (2002-11-21 16:28) [2]

Sorry, но WNetConnectionDialog1 в Help-e нет, поэтому, если можно, поподробнее.


 
Lola ©   (2002-11-21 17:33) [3]

Кое-что нашла в интернете. Делаю так:
procedure TForm1.Button11Click(Sender: TObject);
var
ConnectDlgStruct: TConnectDlgStruct;
begin
ConnectDlgStruct.dwFlags:=CONNDLG_USE_MRU;
WNetConnectionDialog1( ConnectDlgStruct );
end;


А в ответ тишина, т.е. диалог не открывается, хотя вроде написано, что dwFlags:=CONNDLG_USE_MRU симулирует работу WNetConnectionDialog.
Где в моем коде ошибка?


 
Marcus   (2002-11-21 19:07) [4]

А если так:
ZeroMemory(@ConnectDlgStruct, sizeof(CONNECTDLGSTRUCT));
ConnectDlgStruct.cbStructure := sizeof(CONNECTDLGSTRUCT);
ConnectDlgStruct.hwndOwner := Application.Handle;
ConnectDlgStruct.dwFlags:=CONNDLG_USE_MRU;
WNetConnectionDialog1( ConnectDlgStruct );


 
Lola ©   (2002-11-21 22:47) [5]


> Marcus (21.11.02 19:07)

К сожалению, результат тот же, т.е. диалог не вызывается, ошибок не выдает.


 
Victor_Cr ©   (2002-11-22 10:27) [6]

Пиши в реестр или файл.


 
Lola ©   (2002-11-22 11:03) [7]

Что писать-то? :) Если диалога нет.


 
Reindeer Moss Eater   (2002-11-22 11:10) [8]

Если нужно от юзера получить некий сетевой путь, то очень логично показать юзеру диалог, который вернет выбранный путь. А не тот, который выполняет непосредственно логон.


 
Lola ©   (2002-11-22 11:15) [9]


> Reindeer Moss Eater (22.11.02 11:10)
Вот WNetConnectionDialog1 и должен по инструкции и показать юзеру диалог, и вернуть выбранный маршрут (см. код выше). А он почему-то не работает. В этом сейчас вся загвоздка.


 
OutSidEr   (2002-11-22 12:46) [10]

Вобщем-то проблема не такая сложная, если иметь под рукой MSDN 8)
Вся фишка в том, что перед в структуре NETRESOURSE, передаваемой как параметр, нужно обнулить все поля, кроме dwType.
Если интересно, могу по почте выслать кусок кода.


 
Lola ©   (2002-11-22 12:52) [11]


> OutSidEr (22.11.02 12:46)

Конечно, интересно. А как же? :)) Спасибо за внимание.


 
OutSidEr   (2002-11-22 12:55) [12]

Извиняюсь за неприлизанность - делалось на скорую руку...
procedure TForm1.Button1Click(Sender: TObject);
var str:_CONNECTDLGSTRUCTA;
netres:netresource;
err:integer;
errstr:string;
begin
str.hwndOwner:=0;
str.lpConnRes:=@netres;
netres.dwType:=RESOuRCETYPE_DISK;
netres.dwScope :=0;
netres.dwUsage:=0;
netres.dwDisplayType:=0;
netres.lpLocalName:=nil;
netres.lpRemoteName:=nil;
netres.lpComment:=nil;
netres.lpProvider:=nil;
str.dwFlags:=CONNDLG_USE_MRU;
err:=WNEtConnectionDialog1(str);
if err=NO_ERROR then
showmessage(strpas(netres.lpRemoteName))
else
begin
errstr:="Unknown error - "+inttostr(err);
case err of
ERROR_INVALID_PARAMETER:errstr:="Invalid parameter";
ERROR_EXTENDED_ERROR:errstr:="Extended error";
ERROR_BAD_DEV_TYPE :errstr:="Bad device type";
ERROR_BUSY :errstr:="Busy";
ERROR_NO_NETWORK :errstr:="No network";
ERROR_NOT_ENOUGH_MEMORY :errstr:="No memory";
end;
showmessage(errstr);
end;


 
OutSidEr   (2002-11-22 12:56) [13]

Само собой, все можно сократить раза в три - прибить обработчик ошибок, etc...


 
OutSidEr   (2002-11-22 13:09) [14]

Упс. Диалог-то показывается, а вот в netres.lpRemoteName ничего не возвратилось почему-то... Наверное где-то у меня все-таки есть ошибка 8)


 
Lola ©   (2002-11-22 14:27) [15]

Да, lpRemoteName = nil. Номер диска возвращает. А нужно еще и имя компьютера, к которому подключаюсь. Пробую, но пока результатов не дает.


 
OutSidEr   (2002-11-22 15:03) [16]

Но ошибка вероятнее всего именно в моем коде. Если разберешься с проблемой - дай плз знать, интересно 8)


 
Lola ©   (2002-11-22 23:35) [17]

Как я поняла, в коде все правильно. lpRemoteName - входной параметр. Возвращается только номер диска. В принципе я и с этим выкрутилась. OutSidEr, спасибо большое!!!



Страницы: 1 вся ветка

Текущий архив: 2003.01.23;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
14-72504
Юров Владимир
2003-01-06 18:18
2003.01.23
Win2000+Win2000


14-72460
Nick_N_A
2003-01-05 07:10
2003.01.23
Рисовалка ? ? ?


1-72369
Спрашивающий
2003-01-13 04:12
2003.01.23
Управление положением главной формы из немодального окна


7-72568
zsv
2002-11-13 05:26
2003.01.23
Как узнать версию Windows


3-72165
Black Cat
2003-01-02 11:45
2003.01.23
ORA-04021 (таймаут операции блокировки)