Форум: "Сети";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];
ВнизПодключение сетевого ресурса Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c