Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.22;
Скачать: CL | DM;

Вниз

Проверка соединения с локалкой   Найти похожие ветки 

 
Edvard ©   (2003-07-21 14:25) [0]

Господа, подскажите! Как можно контролировать соединение компа с локалкой?
таким образом не получается:

procedure CheckNet(Sender: TObject); (ставлю на таймер)
begin
if GetSystemMetrics(SM_NETWORK) and $01 = $01 then
ShowMessage("Computer is attached
to a network!")
else
ShowMessage("Computer is not
attached to a network!");
end;


при отключении от сети или просто выдергивании кабеля из сетевухи никак не реагирует.
Какие еще есть варианты?


 
Comwad ©   (2003-07-21 14:35) [1]

Посылай что-то вроде ping на адрес шлюза.
Есть компоненты для Delphi


 
Nick2000   (2003-07-22 10:46) [2]

>Edvard
Нашел тут такую вещь. Попробуй. Может подойдет.


const
MAX_NEIGHBORS = 20;

function NetAvailable: Boolean;
var
NetRes: array[0..MAX_NEIGHBORS] of TNetResource;
NNError,
hEnum,
EntryCount,
NetResLen: DWORD;
loop1: Integer;
begin
hEnum := -1;
Result := FALSE;
try
NNError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, nil, hEnum);
if NNError = NO_ERROR then
begin
while NNError <> ERROR_NO_MORE_ITEMS do
begin
EntryCount := 1;
NetResLen := SizeOf(NetRes);
NNError := WNetEnumResource(hEnum, EntryCount, @NetRes, NetResLen);
if (NNError = NO_ERROR) then
begin
for loop1 := 1 to EntryCount do
begin
if Pos("Microsoft", NetRes[0].lpProvider) = 1 then
begin
Result := TRUE;
Break
end
end
end
else
begin
Break
end
end;
WNetCloseEnum(hEnum)
// close enum
end
except
on exception do
if DEBUG then
begin
( "Network Neighborhood Detection Failed.") >Edvard
Нашел тут такую вещь. Попробуй. Может подойдет.


const
MAX_NEIGHBORS = 20;

function NetAvailable: Boolean;
var
NetRes: array[0..MAX_NEIGHBORS] of TNetResource;
NNError,
hEnum,
EntryCount,
NetResLen: DWORD;
loop1: Integer;
begin
hEnum := -1;
Result := FALSE;
try
NNError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, nil, hEnum);
if NNError = NO_ERROR then
begin
while NNError <> ERROR_NO_MORE_ITEMS do
begin
EntryCount := 1;
NetResLen := SizeOf(NetRes);
NNError := WNetEnumResource(hEnum, EntryCount, @NetRes, NetResLen);
if (NNError = NO_ERROR) then
begin
for loop1 := 1 to EntryCount do
begin
if Pos("Microsoft", NetRes[0].lpProvider) = 1 then
begin
Result := TRUE;
Break
end
end
end
else
begin
Break
end
end;
WNetCloseEnum(hEnum)
// close enum
end
except
on exception do
if DEBUG then
begin
ShowMessage("Network Neighborhood Detection Failed.")
end;
end
end;


 
S@shka ©   (2003-07-22 12:28) [3]

Да, а с помощью пинга все получилось бы проще!!!


 
Verg ©   (2003-07-22 12:43) [4]


> S@shka ©
> Да, а с помощью пинга все получилось бы проще!!!


А кто вам сказал, что TCP/IP неотъемлимая часть виндовой сети?


 
Толик ©   (2003-07-22 13:51) [5]

to Nick2000 (22.07.03 10:46)
Под Win2k это сработает даже в том случае, если комп отключен от сети (узел «Сеть Microsoft Windows» проводник показывает всегда), так что этот способ не проходит.
Скорее здесь может подойти следующее:

type
Tip = array[0..4] of byte;
Pip = ^Tip;
function HostToIP(AHostName: string): string;
const
FormatMask: string = "%d.%d.%d.%d";
var
WSData: TWSAData;
HostEnt: PHostEnt;
IP : Pip;
begin
WinSock.WSAStartup($0101, WSData);
try
HostEnt := WinSock.GetHostByName(pchar(AHostName));
IP := Pip(HostEnt^.h_addr_list^);
( FormatMask, [IP[0], IP[1], IP[2], IP[3]])
to Nick2000 (22.07.03 10:46)
Под Win2k это сработает даже в том случае, если комп отключен от сети (узел «Сеть Microsoft Windows» проводник показывает всегда), так что этот способ не проходит.
Скорее здесь может подойти следующее:

type
Tip = array[0..4] of byte;
Pip = ^Tip;
function HostToIP(AHostName: string): string;
const
FormatMask: string = "%d.%d.%d.%d";
var
WSData: TWSAData;
HostEnt: PHostEnt;
IP : Pip;
begin
WinSock.WSAStartup($0101, WSData);
try
HostEnt := WinSock.GetHostByName(pchar(AHostName));
IP := Pip(HostEnt^.h_addr_list^);
RESULT := SysUtils.Format(FormatMask, [IP[0], IP[1], IP[2], IP[3]]);
finally
WinSock.WSACleanup();
end;
end;

Если эта ф-я вернёт 127.0.0.1 - значит соединения нет.



Страницы: 1 вся ветка

Текущий архив: 2003.09.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
3-71557
AlexA
2003-08-29 10:19
2003.09.22
Использование триггеров


8-71770
WInAPi Lamer
2003-05-19 13:40
2003.09.22
DelpiX problemmmmm in fullscreen


6-71783
nobody
2003-07-23 00:22
2003.09.22
ip to host


14-71838
Igor__
2003-09-01 17:52
2003.09.22
Иконки с использованием прозрачности


1-71627
Berezne
2003-09-09 12:34
2003.09.22
Что означает ета ошибка???