Текущий архив: 2003.01.30;
Скачать: CL | DM;
ВнизЗакрыть все открытые диски или папки на доступ Найти похожие ветки
← →
Эндрю2 (2002-10-17 23:55) [0]Подскажите как мне нажатием одной кнопки закрыть все открытые диски на доступ(у которых рука под папкой или названия диска), а потом их также все открыть, но без перезагрузки Windows
← →
Pumpkin (2002-10-18 10:11) [1]Здесь об этом говорили много раз. Поищи.
Если кратко: NetShareAdd + NetShareDel + SHChangeNotify.
Для Win9x/ME нужен svrapi.pas который можно взять здесь ftp://delphi-jedi.org/api/LanManager.zip
← →
Эндрю2 (2002-10-21 19:34) [2]Ни чего я не нашел
← →
Ricky-Ticky-Tavy (2002-10-25 14:42) [3]Найди описание svrapi.dll (где-то в инете видел исходник переписанный под Delphi)
← →
Pumpkin (2002-10-25 20:35) [4]Еще раз: скачай ftp://delphi-jedi.org/api/LanManager.zip
Там есть все, что тебе нужно, с примерами.
← →
Эндрю2 (2002-10-25 21:20) [5]Ну, типа что-то нашел буду разбираться.
А может кто конкретный исходник кинет.
← →
Эндрю2 (2002-11-19 22:48) [6]Нашел я тут ниже следующее, это все не то
Мне нужно прочитать реестр, увидеть что
диски открыты, и предложить их закрыть,
а потом ихже опять открыть
кто-нибуть подскажет?
procedure TForm1.Button1Click(Sender: TObject);
Var
info50: TShareInfo50;
rc, cb: Integer;
ServerName, Path, NetName, ErrMes, ErrCap, Comment:String;
MessIconBtn:Byte;
begin
//установим необходимые параметры
ServerName:="";
Path:="C:\TEMP";
NetName:="TEST";
Comment:="This is a network machine""s commentary";
//заполним буфер
FillChar(info50, sizeof(info50), 0);
With info50 Do
Begin{With}
StrCopy(shi50_netname, PChar(NetName)); //сетевое имя
shi50_type := STYPE_DISKTREE; //подключать будем диск
shi50_remark:=PChar(Comment); //комментарий
shi50_flags:= SHI50F_RDONLY OR SHI50F_FULL //доступ определяется паролем
OR SHI50F_PERSIST;//и пишется в Registry
shi50_path:=PChar(Path); //путь
StrPCopy(shi50_rw_password,"ASDF"); //пароль для полного доступа
StrPCopy(shi50_ro_password,"QWE"); // пароль для "только чтение"
End;{With}
//установим размер буфера
cb := sizeof(info50);
//основная функция
rc := NetShareAdd(PChar(ServerName), 50, @info50, cb);
//сформируем текст сообщений об успехе или ошибках
ErrMes:="Доступ к устройству ""+NetName+"" открыт!";
ErrCap:="Все в порядке!";
MessIconBtn:=MB_OK OR MB_ICONINFORMATION;
//проверка ошибок
If rc <> 0 Then
Begin {ошибка}
ErrCap:="Ошибка!";
MessIconBtn:=MB_OK OR MB_ICONERROR;
Case rc Of
//расшифровка ошибок
ERROR_NOT_ENOUGH_MEMORY : ErrMes:="Недостаточно памяти";
ERROR_BAD_NETPATH : ErrMes:="""+Servername+ "" - неверное сетевое имя!";
ERROR_NETNAME_DELETED : ErrMes:="Сетевой ресурс более недоступен";
ERROR_NETWORK_ACCESS_DENIED: ErrMes:="Отсутствует доступ к сети";
ERROR_BAD_DEV_TYPE : ErrMes:="Неверный тип сетевого ресурса";
ERROR_BAD_NET_NAME : ErrMes:="Не найдено сетевое имя";
ERROR_INVALID_PARAMETER : ErrMes:="Неверный параметр";
ERROR_INVALID_LEVEL : ErrMes:="Неверный уровень администрирования";
NERR_InvalidComputer:ErrMes:="Неверное имя компьютера!";
NERR_UnknownServer:ErrMes:="Неизвестный сервер!";
NERR_UnknownDevDir:ErrMes:="Устройство ""+Path+"" отсутствует!";
NERR_ServerNotStarted:ErrMes:="Сервер не работает!";
NERR_RedirectedPath:ErrMes:="Переназначенный путь!";
NERR_DuplicateShare:ErrMes:="Сетевое имя ""+NetName+"" уже существует!";
NERR_BufTooSmall:ErrMes:="Слишком маленький буфер для данных!";
Else
End; {Case}
End; {ошибка}
//выдадим сообщение
MessageBox(Application.Handle,PChar(ErrMes),PChar(ErrCap),MessIconBtn);
end;
← →
Эндрю2 (2002-11-26 17:51) [7]Неужель такая сложная тема
← →
Эндрю2 (2002-12-02 21:32) [8]Ну кто-нибуть, хоть что-нибуть
Страницы: 1 вся ветка
Текущий архив: 2003.01.30;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.007 c