Афоризм дня: Возвращается муж домой из Интернета...
uses
WinInet;
const
MODEM = 1;
LAN = 2;
PROXY = 4;
BUSY = 8;
function GetConnectionKind(var strKind: string): Boolean;
var
flags: DWORD;
begin
strKind := '';
Result := InternetGetConnectedState(@flags, 0);
if Result thenbeginif (flags and MODEM) = MODEM then strKind := 'Modem';
if (flags and LAN) = LAN then strKind := 'LAN';
if (flags and PROXY) = PROXY then strKind := 'Proxy';
if (flags and BUSY) = BUSY then strKind := 'Modem Busy';
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
strKind: string;
beginif GetConnectionKind(strKind) then
ShowMessage(strKind);
end;
Привет! Я переведу текст на русский язык.
Код на Delphi, который определяет тип интернет-соединения на компьютере:
Секция использования
Код импортирует модуль WinInet, который предоставляет функции для работы с Windows Internet API.
Константы
Код defines четыре константы:
MODEM: представляет соединение по модему
LAN: представляет локальную сеть (LAN) соединения
PROXY: представляет соединение через прокси-сервер
BUSY: представляет занятое соединение по модему
Функция GetConnectionKind
Эта функция принимает строковый параметр strKind и возвращает булевое значение, указывающее, доступна ли интернет-соединение. Функция выполняет следующие действия:
1. Инициализирует переменную strKind пустой строкой.
2. Вызывает функцию InternetGetConnectedState из модуля WinInet API, передавая указатель на переменную DWORDflags как первый аргумент и 0 как второй аргумент.
3. Если функция возвращает True, то это означает, что доступно интернет-соединение.
4. Код затем проверяет значение переменной flags с помощью битовых операций для определения типа интернет-соединения:
* Если (flags and MODEM) = MODEM, то устанавливает strKind в 'Modem'.
* Если (flags and LAN) = LAN, то устанавливает strKind в 'LAN'.
* Если (flags and PROXY) = PROXY, то устанавливает strKind в 'Proxy'.
* Если (flags and BUSY) = BUSY, то устанавливает strKind в 'Modem Busy'.
5. Функция возвращает значение переменной Result (которая инициализируется значением False) если доступно интернет-соединение, или False в противном случае.
Процедура Button1Click
Эта процедура является обработчиком события Button1Click для формы (TForm1). Она выполняет следующие действия:
1. Вызывает функцию GetConnectionKind и передает пустую строку как первый аргумент.
2. Если функция возвращает True, то отображает сообщение об ошибке с типом интернет-соединения, используя процедуру ShowMessage.
Альтернативное решение
Если вы хотите упростить код, можно использовать одиночный if-statement с множественными условиями вместо отдельных проверок для каждой константы:
Таким образом, можно уменьшить количество условий и сделать код более компактным. Однако это может не быть столь ясным или поддерживаемым для сложной логики.
Статья описывает способ получения информации о типе интернет-соединения, используя функцию InternetGetConnectedState и константы MODEM, LAN, PROXY, BUSY в Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.