Программирование гнёзд. Подключение и отключение сетевых дисков:
В этом номере есть статья о том, как работать с WinAPI. Честно сказать, я немного запоздал с этой статьёй, потому что я уже давно использую их. Например, сетевые функции, которые я использую, относятся к WinAPI, значит ты уже давно знаком с этой тематикой.
Хватит болтовни, давай продолжим изучать WinAPI, то есть функции для работы с сетью. Взгляни на рисунок 1. Вот такую прогу нам предстоит сегодня написать. Точнее, улучшить прогу, написанную в прошлом месяце. Исходники ты можешь забрать здесь, а объяснение того, что происходит в проге можешь получить здесь, т. е. прям здесь.
Рис.1 Пример работы проги
В программе используется две новые функции:
function WNetConnectionDialog(
hwnd: HWND;
dwType: DWORD):
DWORD; stdcall;
Показать окно подключения сетевого устройства.
function WNetDisconnectDialog (
hwnd: HWND;
dwType: DWORD):
DWORD; stdcall;
Показать окно отключения сетевого устройства.
Функции очень похожи. В качестве первого параметра передаётся указатель на окно владельца. Второй параметр - это флаги:
RESOURCETYPE_DISK Отображать в выпадающем списке диалога сетевые диски.
RESOURCETYPE_PRINT Отображать в выпадающем списке диалога сетевые принтеры.
RESOURCETYPE_ANY Отображать в выпадающем списке диалога всё, что попадётся под руку.
Эти функции вызываю уже давно тебе известный диалог (если ты уже работал в локальной сети). Посмотри на рисунок 2 и убедись.
Рис.2 Окно подключения сетевого устройства
Как видишь всё просто. На этом я заканчиваю объяснение сегодняшней проги, но это не значит, что заканчивается статья. Знакомство с сетевыми функциями продолжается. Я ещё тебя не познакомил с функциями, которыми можно подключить те же устройства без использования стандартного диалога. Так что крепись. В конце статьи ты сможешь написать собственные диалоги подключения сетевых устройств.
function WNetAddConnectionA(
lpRemoteName,
lpPassword,
lpLocalName:
PansiChar
): DWORD; stdcall;
Эта функция подключает сетевое устройство. В качестве параметров ты должен передать:
lpRemoteName -адрес указывающий куда подсоединится, например, \\333\D .
lpPassword - пароль, он и в Африке пароль. Если ты будешь использовать NIL, то будет использоваться значение по умолчанию.
lpLocalName - Какое твоё устройство должно переадресовываться сетевым. Чё-то заумно я сказал. Короче, используй NIL и не будет проблем.
function WNetCancelConnectionA(
lpName: PAnsiChar;
fForce: BOOL
): DWORD; stdcall;
Отключить сетевое устройство. Первый параметр указывает на строку, которая хранит имя сетевого ресурса для отключения.
Если второй параметр TRUE, то даже если на сетевом ресурсе открыты файлы, он всё равно закроется. Если FALSE, то в этом случае произойдёт ошибка.
Как видишь, всё также просто как два пальца описать (ударение на второй слог, специально для прапорщиков - это буква "и").
Всё. Вот мы и закончили знакомится с функциями имеющими тип WNet…. Дальше будет ещё веселее.