Главная страница
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.027 c
1-71743
-AGGRESSOR-
2003-09-10 13:03
2003.09.22
OLE и потоки


14-71881
3APA3A
2003-09-03 10:26
2003.09.22
Windows 2003 Server


9-71459
[Baradoo]
2003-03-20 22:48
2003.09.22
Налет хакеров на сервера от hotbox и mail


3-71485
Engel
2003-09-01 19:33
2003.09.22
Компоненты для переноса таблицы


14-71876
_0$a_
2003-09-03 17:49
2003.09.22
Вот дожился или (основные функции МС дос)