Страница 1 из 2

Delphi - определить подключение к Интернету.

Добавлено: 05 фев 2008, 16:27
MOTOCoder
Здравствуйте!
Такая проблема : нужно, чтобы программа висящая в фоновом режиме отреагировала
на подключение компьютера к интернету(как MailAgent или автоматическое обновление программ). Проверять подключение по таймеру - как-то нерационально, может есть какое-нибудь событие windows?

Re: Delphi - определить подключение к Интернету.

Добавлено: 06 фев 2008, 10:50
Хыиуду
По-моему, в разделе WinAPI такая тема была где-то год назад.

Re: Delphi - определить подключение к Интернету.

Добавлено: 06 фев 2008, 17:31
MOTOCoder
Да в общем-то проблему решил - поймал нужное сообщение WinSight'ом.
--------------------
Видимо ошибся, что то не то поймал - похоже никакого сообщения не генерируется.

Re: Delphi - определить подключение к Интернету.

Добавлено: 06 фев 2008, 23:20
MOTOCoder
Хыиуду писал(а):По-моему, в разделе WinAPI такая тема была где-то год назад.
Перерыл все, начиная с 2005 года - ничего такого не нашел.

Пробовал проверку по таймеру - найданный в инете код проверки при выполнении грузит процессор на 10-15 % - даже если выполнять раз в 3-5 секунд - все равно как-то не очень...

Re: Delphi - определить подключение к Интернету.

Добавлено: 07 фев 2008, 09:44
Хыиуду
А если тупо раз в десять секунд пинговать яндекс?

Re: Delphi - определить подключение к Интернету.

Добавлено: 07 фев 2008, 12:59
MOTOCoder
Хыиуду писал(а):А если тупо раз в десять секунд пинговать яндекс?
Пытался делать примерно так, выполнял по таймеру такой код:
[syntax='delphi']
function CheckRASConnections: string;
const
MaxEntries = 100;
var
BufSize: Integer;
NumEntries: Integer;
Entries: array[1..MaxEntries] of TRasConn;
begin
Entries[1].dwSize := SizeOf(TRasConn);
Bufsize := SizeOf(TRasConn) * MaxEntries;
RasEnumConnections(@Entries[1], BufSize, NumEntries);
if numentries > 0 then
result := strpas(@Entries[1].szEntryName)
else
Result := 'Disconnected';
end;
[/syntax]

Просто думал, что есть более рациональный способ.

Re: Delphi - определить подключение к Интернету.

Добавлено: 31 мар 2008, 18:00
AiK
InternetGetConnectedState ?

Re: Delphi - определить подключение к Интернету.

Добавлено: 31 мар 2008, 18:06
MOTOCoder
AiK писал(а):InternetGetConnectedState ?
Во-первых вопрос, из какого модуля эта функция? Я такой что-то не нашел.
Во-вторых, я просто думал, что "умные" программеры MS предусмотрели какой-нибудь способ оповещения приложений о подключении к интернету(типа как оповещение всех окон о завершении работы), а так все равно предется вызывать функцию по таймеру.

Re: Delphi - определить подключение к Интернету.

Добавлено: 31 мар 2008, 18:18
AiK
Requirements
Client Requires Windows Vista, Windows XP, Windows 2000 Professional, Windows NT Workstation 4.0, Windows Me, Windows 98, or Windows 95.
Server Requires Windows Server 2008, Windows Server 2003, Windows 2000 Server, or Windows NT Server 4.0.
Version Requires Internet Explorer 4.0 or later.
Header

Declared in Wininet.h.
Library

Use Wininet.lib.
DLL

Requires Wininet.dll.
На мой взгляд это всё к вопросу о кураторстве. Вопрос системный и его задавать логично было в разделе WinAPI etc.

Re: Delphi - определить подключение к Интернету.

Добавлено: 31 мар 2008, 18:21
MOTOCoder
Я задавал вопрос в этом разделе, так как писал именно на Delphi, к тому же я не исключал вариант, что есть "чисто дельфовский" подход к решению этой проблемы.