В каком случае или как я могу проверить подключение к Интернету во время работы программы? Сценарий: программа запущена и внезапно отключается подключение к Интернету, и открывается диалоговое окно «Без доступа в Интернет, изменение строки подключения к центральной базе данных». Я пробовал эту функцию, но я не уверен, в каком событии я должен поставить так, чтобы он работал все время.Проверка подключения к Интернету во время выполнения
function TFK_Lib.CheckInternet: boolean;
begin
ConnectedState := INTERNET_CONNECTION_MODEM;
Result := InternetGetConnectedState(@ConnectedState, 0);
end;
Ваше предлагаемое решение не будет работать. Предположим, что соединение падает после вызова 'CheckInternet', но прежде чем вы начнете использовать соединение. Здесь есть условие гонки, которое вам нужно признать. –
Функция AFAIK выше даже не даст вам текущего состояния подключения. Он будет указывать только на то, что подключение к Интернету настроено правильно, но не текущее активное/неактивное состояние. –
Я думаю, что вас не интересует официальный статус в Интернете - Windows может подумать, что он подключен, но ваша программа не имеет доступа к точно вашей удаленной базе данных (удаленный сервер DB вниз, интрасеть вместо Интернета, антивирус брандмауэра блокирует ваше приложение, какая бы другая проблема). Кроме того, у вас может не быть подключения к WWW, но у вас все еще есть подключение к базе данных в Интернете. Таким образом, вам нужно только попробовать подключиться к вашей конкретной удаленной службе и сообщить любой текст ошибки, который Windows даст вам в случае сбоя. Это не интересно вашему приложению, если какой-либо Большой Интернет пользуется или нет. –