![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подключение сетевого ресурса [D6, WinXP]
Lola © (2002-11-21 14:28:00)Подключаю сетевой ресурс с помощью WNetConnectionDialog. Как теперь мне вернуть выбранный юзером маршрут в виде строки, чтобы его можно было сохранить, и, в следующий раз, подключаться по нему автоматом? Если есть другие предложения, буду рада их услышать. Спасибо.
Lola (2002-11-22 23:35:00) [1]Как я поняла, в коде все правильно. lpRemoteName - входной параметр. Возвращается только номер диска. В принципе я и с этим выкрутилась. OutSidEr, спасибо большое!!!
OutSidEr (2002-11-22 15:03:00) [2]Но ошибка вероятнее всего именно в моем коде. Если разберешься с проблемой - дай плз знать, интересно 8)
Lola (2002-11-22 14:27:00) [3]Да, lpRemoteName = nil. Номер диска возвращает. А нужно еще и имя компьютера, к которому подключаюсь. Пробую, но пока результатов не дает.
OutSidEr (2002-11-22 13:09:00) [4]Упс. Диалог-то показывается, а вот в netres.lpRemoteName ничего не возвратилось почему-то... Наверное где-то у меня все-таки есть ошибка 8)
OutSidEr (2002-11-22 12:56:00) [5]Само собой, все можно сократить раза в три - прибить обработчик ошибок, etc...
OutSidEr (2002-11-22 12:55:00) [6]Извиняюсь за неприлизанность - делалось на скорую руку...
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;
Lola (2002-11-22 12:52:00) [7]
> OutSidEr (22.11.02 12:46)
Конечно, интересно. А как же? :)) Спасибо за внимание.
OutSidEr (2002-11-22 12:46:00) [8]Вобщем-то проблема не такая сложная, если иметь под рукой MSDN 8)
Вся фишка в том, что перед в структуре NETRESOURSE, передаваемой как параметр, нужно обнулить все поля, кроме dwType.
Если интересно, могу по почте выслать кусок кода.
Lola (2002-11-22 11:15:00) [9]
> Reindeer Moss Eater (22.11.02 11:10)
Вот WNetConnectionDialog1 и должен по инструкции и показать юзеру диалог, и вернуть выбранный маршрут (см. код выше). А он почему-то не работает. В этом сейчас вся загвоздка.
Reindeer Moss Eater (2002-11-22 11:10:00) [10]Если нужно от юзера получить некий сетевой путь, то очень логично показать юзеру диалог, который вернет выбранный путь. А не тот, который выполняет непосредственно логон.
Lola (2002-11-22 11:03:00) [11]Что писать-то? :) Если диалога нет.
Victor_Cr (2002-11-22 10:27:00) [12]Пиши в реестр или файл.
Lola (2002-11-21 22:47:00) [13]
> Marcus (21.11.02 19:07)
К сожалению, результат тот же, т.е. диалог не вызывается, ошибок не выдает.
Marcus (2002-11-21 19:07:00) [14]А если так:
ZeroMemory(@ConnectDlgStruct, sizeof(CONNECTDLGSTRUCT));
ConnectDlgStruct.cbStructure := sizeof(CONNECTDLGSTRUCT);
ConnectDlgStruct.hwndOwner := Application.Handle;
ConnectDlgStruct.dwFlags:=CONNDLG_USE_MRU;
WNetConnectionDialog1( ConnectDlgStruct );
Lola (2002-11-21 17:33:00) [15]Кое-что нашла в интернете. Делаю так:
procedure TForm1.Button11Click(Sender: TObject);
var
ConnectDlgStruct: TConnectDlgStruct;
begin
ConnectDlgStruct.dwFlags:=CONNDLG_USE_MRU;
WNetConnectionDialog1( ConnectDlgStruct );
end;
А в ответ тишина, т.е. диалог не открывается, хотя вроде написано, что dwFlags:=CONNDLG_USE_MRU симулирует работу WNetConnectionDialog.
Где в моем коде ошибка?
Lola (2002-11-21 16:28:00) [16]Sorry, но WNetConnectionDialog1 в Help-e нет, поэтому, если можно, поподробнее.
OutSidEr (2002-11-21 14:58:00) [17]Используй WNetConnectionDialog1- там параметром передается указатель на структуру CONNECTDLGSTRUCT, в которой есть все, что нужно.