Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2008, 15:32   #1
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию Узнать состояние подключения

У меня такой вопрос: Нужно узнать состояние соединения и если True, то подключиться к smtp серверу и послать Message...
Hottabych вне форума Ответить с цитированием
Старый 02.03.2008, 16:49   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

if <состояние подключения>=true then
begin
<подключиться к SMTP серверу>;
<послать Message>;
end;

каков вопрос, таков ответ.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 02.03.2008, 19:47   #3
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

Ответ оригинальны ... А в деталях?
Хотелось бы саму функцию "<состояние подключения>", а то все которые смотрел не работают( или у меня руки кривые )...
Hottabych вне форума Ответить с цитированием
Старый 02.03.2008, 20:03   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

а что есть подключение ? ато пока занимаемся лишь медитацией. Описывайте нормально что вы используете, что делаете, что необходимо получить в результате.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 03.03.2008, 08:39   #5
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

извиняюсь... Короче, есть подключение (gprs модем) и моя прога перед тем как отправить почту проверяет, активно ли оно. Вот такая бы казалось мелочь
Hottabych вне форума Ответить с цитированием
Старый 03.03.2008, 10:03   #6
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

InternetGetConnectedState
Retrieves the connected state of the local system.

BOOL InternetGetConnectedState(
LPDWORD lpdwFlags,
DWORD dwReserved
);

Parameters
lpdwFlags
[out] Pointer to a variable that receives the connection description. This parameter may return a valid flag even when the function returns FALSE. This parameter can be one or more of the following values.Value Meaning
INTERNET_CONNECTION_CONFIGURED
0x40 Local system has a valid connection to the Internet, but it might or might not be currently connected.
INTERNET_CONNECTION_LAN
0x02 Local system uses a local area network to connect to the Internet.
INTERNET_CONNECTION_MODEM
0x01 Local system uses a modem to connect to the Internet.
INTERNET_CONNECTION_MODEM_BUSY
0x08 No longer used.
INTERNET_CONNECTION_OFFLINE
0x20 Local system is in offline mode.
INTERNET_CONNECTION_PROXY
0x04 Local system uses a proxy server to connect to the Internet.

dwReserved
[in] Reserved. Must be zero.
Return Value
Returns TRUE if there is an active modem or a LAN Internet connection, or FALSE if there is no Internet connection, or if all possible Internet connections are not currently active. For more information, see the Remarks section.

When InternetGetConnectedState returns FALSE, the application can call GetLastError to retrieve the error code.

Remarks

A return value of TRUE from InternetGetConnectedState indicates that at least one connection to the Internet is available. It does not guarantee that a connection to a specific host can be established. Applications should always check for errors returned from API calls that connect to a server. InternetCheckConnection can be called to determine if a connection to a specific destination can be established.

A return value of TRUE indicates that either the modem connection is active, or a LAN connection is active and a proxy is properly configured for the LAN. A return value of FALSE indicates that neither the modem nor the LAN is connected. If FALSE is returned, the INTERNET_CONNECTION_CONFIGURED flag may be set to indicate that autodial is configured to "always dial" but is not currently active. If autodial is not configured, the function returns FALSE.


Только соответственно выберите необходимые вам параметры вызова
Код:
const INTERNET_CONNECTION_MODEM = 1;
      INTERNET_CONNECTION_LAN   = 2;
      INTERNET_CONNECTdState';

{$R *.DFM}

procedure TForm1.CheckState(Sender: TObject);
var
  dwConnectionTypes: DWORD;
begin
  dwConnectionTypes:=IC_MODEM+IC_LAN+IC_PROXY;
  if InternetGetConnectedState(@dwConnectionTypes,0) then
    ShowMessage('Youa connected')
  else
    ShowMessage('No Connection');
end;
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 03.03.2008, 17:47   #7
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

Такая фишка не катит благодаря мелкомягким и их прекрасной WinInet (по-крайней мере я так понял), все время 'Youa connected'. А можно сделать через try? Например:
Код:
try
smtp.connect;
except
t := 1; end; //таймер по кругу
Жду ответа...
Hottabych вне форума Ответить с цитированием
Старый 03.03.2008, 18:02   #8
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

Вот как проверить, подключен ли компьютер к интернету:
1 способ:

Код:
function IsConnectedToInternet: Boolean;
var
dwConnectionTypes: DWORD;
begin
dwConnectionTypes:=
INTERNET_CONNECTION_MODEM +
INTERNET_CONNECTION_LAN +
INTERNET_CONNECTION_PROXY;
Result:= InternetGetConnectedState(@dwConnectionTypes, 0);
end;
procedure TForm1.XiButton1Click(Sender: TObject);
begin
if IsConnectedToInternet then showmessage ('Y') else showmessage ('N');
end;
2 способ:
Код:
function GetConnect(var strKind: string): Boolean;
var
flags: DWORD;
begin
strKind := '';
Result := InternetGetConnectedState(@flags, 0);
if Result then
begin
if (flags and 1) = 1 then strKind := 'Modem';
if (flags and 2) = 2 then strKind := 'LAN';
if (flags and 4) = 4 then strKind := 'Proxy';
if (flags and 8) = 8 then strKind := 'Modem Busy';
end;
end;
procedure TForm1.XiButton2Click(Sender: TObject);
var strkind:string;
begin
if GetConnect(strKind) then
ShowMessage('есть')
else
ShowMessage('нету');
end;
Я не маюсь бездельем, я от него тащусь!
Tayfun вне форума Ответить с цитированием
Старый 03.03.2008, 18:10   #9
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

Спасибо, за советы, сделал через try все нормально, меня это устраивает...
Hottabych вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Настройка VPN подключения Altera Операционные системы общие вопросы 3 07.02.2008 11:39
состояние CDRom joker Win Api 12 27.01.2008 08:06
Ошибка подключения к БД CruiserD БД в Delphi 5 26.10.2007 14:42
Время подключения vitalik007 Работа с сетью в Delphi 1 15.08.2007 13:10
сделать так, чтобы ProgressBar показывал состояние копирования папки wolk Компоненты Delphi 3 23.03.2007 23:25