Форум: "WinAPI";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];
Вниз
Отключение сетевыеx дисков Найти похожие ветки
← →
pepper © (2005-08-10 09:36) [0]Уважаемые Мастера!
Программа забирает файлы через сетевые диски на другом комьютере, обрабатывает их и затем выкладывает на сетевой диск третьего компьютера.Проблема состоит в том, что изредко происходит отключение сетевых дисков, и сответственно происходит остановка процесса обработки. Скажите как программно можно отследить состояние сетевого диска, и самое главное, как активизировать этот сетевой диск, при попытке использовать функцию WNetAddConnection2 для неактивного сетевого диска, она возвращает значение, что сетевой диск уже существует.
← →
Rouse_ © (2005-08-10 09:59) [1]После прихода сообщения WM_DEVICECHANGE где WParam равен $8004, перебери диски в системе (GetLogicalDrives + GetDriveType), твои будут видны как DRIVE_REMOTE
← →
Bekzhan (2005-08-10 10:52) [2]Удалено модератором
Примечание: Offtopic
← →
Bekzhan (2005-08-10 10:55) [3]Подключить с.д
//Пример открытия стандартного диалога
procedure TForm1.Button1Click(Sender: TObject);
begin
WNetConnectionDialog(Handle,RESOURCETYPE_DISK)
end;
//Так же можно подключить и принтер
procedure TForm1.Button1Click(Sender: TObject);
begin
WNetConnectionDialog(Handle,RESOURCETYPE_PRINT)
end;
//либо можно использовать следующий код
procedure TForm1.Button2Click(Sender: TObject);
var
NetResource: TNetResource;
begin
{ заполняем структуру TNetResource }
NetResource.dwType := RESOURCETYPE_DISK;
NetResource.lpLocalName := "S:";
NetResource.lpRemoteName := "\\myserver\public";
NetResource.lpProvider := "";
{ подключаем сетевой ресурс, используя структуру TNetResource }
If ( WNetAddConnection2(NetResource,
"", {Password (if needed) or empty}
"", {User name (if needed) or empty}
CONNECT_UPDATE_PROFILE)<>NO_ERROR) Then
Raise Excepcion.Create("unable to map drive")
//так же существуют другие константы для определения возникшей ошибки
//ERROR_ACCESS_DENIED, ERROR_ALREADY_ASSIGNED, и т.д.
end;
//так же можно и отключить сетевой ресурс...
procedure TForm1.Button2Click(Sender: TObject);
begin
if WNetCancelConnection2( "S:",0,TRUE) <> NO_ERROR then
Raise Exception.create("Error disconnecting map drive");
//соответственно можно использовать другие константы для определения ошибки
//ERROR_DEVICE_IN_USE, ERROR_NOT_CONNECTED, и т.д.
end;
← →
Bekzhan (2005-08-10 10:57) [4]Вызов диалога отключения сетевого диска
function DisconnectNetworkDrive(Wnd: HWND = 0): DWORD;
begin
if Wnd = 0 then
Wnd := FindWindow("Shell_TrayWnd", "");
Result := WNetDisconnectDialog(Wnd, RESOURCETYPE_DISK);
end;
// Пример использования:
DisconnectNetworkDrive(Application.Handle);
← →
pepper © (2005-08-10 12:20) [5]
> Bekzhan (10.08.05 10:57) [4]
> Вызов диалога отключения сетевого диска
Меня интересуте как остледить что диск отключился, а подключение я делаю не через WNetConnectionDialog, а через WNetConnectionDialog2.
← →
pepper © (2005-08-10 12:22) [6]
> Rouse_ © (10.08.05 09:59) [1]
> После прихода сообщения WM_DEVICECHANGE где WParam равен
> $8004, перебери диски в системе (GetLogicalDrives + GetDriveType),
> твои будут видны как DRIVE_REMOTE
Rouse, понял спасибо, а как можно восстановить подключение сетевого диска? WNetAddConnection2 не срабатывает или я не правильно делаю вызов...
← →
pepper © (2005-08-10 12:23) [7]
> Bekzhan (10.08.05 10:57) [4]
Прошу прощения WNetAddConnection2.....
← →
Rouse_ © (2005-08-10 14:59) [8]Сначала вызови WNetCancelConnection2, а потом уж WNetAddConnection2
← →
pepper © (2005-08-10 15:23) [9]
> Rouse_ © (10.08.05 14:59) [8]
> Сначала вызови WNetCancelConnection2, а потом уж WNetAddConnection2
Как оказалось все гораздо проще и смешнее, чем я ожидал.....Rouse_ куда выслать отсканированные этикетки от пива?
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.014 c