Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
[Delphi] Проверка наличия локалки |

02.11.2006, 00:00
|
|
Новичок
Регистрация: 06.06.2006
Сообщений: 11
Провел на форуме: 118766
Репутация:
5
|
|
[Delphi] Проверка наличия локалки
Нужно проверить наличие локалки, подскажите через что можно реализовать
wininet.INTERNET_CONNECTION_LAN не возращяет правельного результата
|
|
|

02.11.2006, 09:53
|
|
Участник форума
Регистрация: 06.04.2006
Сообщений: 257
Провел на форуме: 367179
Репутация:
76
|
|
Можно попробывать так:
Код:
uses Wininet,windows;
var
flags: DWORD;
begin
InternetGetConnectedState(@flags,0);
if (flags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then MessageBoxA(0,'LAN Connection','lan',0);
end.
Или так
Код:
if GetSystemMetrics(SM_NETWORK) and $01 = $01 then MessageBoxA(0,'LAN Connection','lan',0);
|
|
|

02.11.2006, 11:16
|
|
Banned
Регистрация: 01.08.2006
Сообщений: 725
Провел на форуме: 7681825
Репутация:
4451
|
|
Код:
InternetGetConnectedState(@flags,0);
if (flags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN
Зачем так усложнять
Код:
var Flag :DWord; isLan:Boolean;
begin
Flag := INTERNET_CONNECTION_LAN;
isLan := InternetGetConnectedState(@Flag,0);
case isLan of
true : ShowMessage('Connected');
false : ShowMessage('disConnected');
Код:
if GetSystemMetrics(SM_NETWORK) and $01 = $01 then MessageBoxA(0,'LAN Connection','lan',0);
Вообще непонятная функция,вернет true если подключено любое сетевое устройство,справка тоже ничего хорошего нам не говорит
Можно еще так
Код:
function InetIsOffline(Flag: Integer): Boolean; stdcall; external 'URL.DLL'
Но это уже к интернету %)
|
|
|

02.11.2006, 14:32
|
|
Участник форума
Регистрация: 06.04.2006
Сообщений: 257
Провел на форуме: 367179
Репутация:
76
|
|
Можно попробывать поискать компьютеры в сети, и если найдешь хоть один, то локальная сеть найдена.
Код:
function TNetForm.FillNetLevel(xxx: PNetResource; List: TListItems): Word;
type
PNRArr = ^TNRArr;
TNRArr = array[0..59] of TNetResource;
var
x: PNRArr;
tnr: TNetResource;
I: integer;
EntrReq,
SizeReq,
twx: THandle;
WSName: string;
LI: TListItem;
begin
Result := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY,
RESOURCEUSAGE_CONTAINER, xxx, twx);
if Result = ERROR_NO_NETWORK then
Exit;
if Result = NO_ERROR then
begin
New(x);
EntrReq := 1;
SizeReq := SizeOf(TNetResource) * 59;
while (twx <> 0) and
(WNetEnumResource(twx, EntrReq, x, SizeReq) <> ERROR_NO_MORE_ITEMS) do
begin
for i := 0 to EntrReq - 1 do
begin
Move(x^[i], tnr, SizeOf(tnr));
case tnr.dwDisplayType of
RESOURCEDISPLAYTYPE_SERVER:
begin
if tnr.lpRemoteName <> '' then
WSName := tnr.lpRemoteName
else
WSName := tnr.lpComment;
LI := list.Add;
LI.Caption := copy(WSName, 3, length(WSName) - 2);
//list.Add(WSName);
end;
else
FillNetLevel(@tnr, list);
end;
end;
end;
Dispose(x);
WNetCloseEnum(twx);
end;
end;
Пример вызова:
FillNetLevel(nil, ListView1.Items);
(с) DelphiWorld
|
|
|

02.11.2006, 21:34
|
|
Новичок
Регистрация: 06.06.2006
Сообщений: 11
Провел на форуме: 118766
Репутация:
5
|
|
у меня сработал только вариант с поиском компов в сети %) TaNkist, [s]держи +  [/s] а че плюс то не добавляется? =/
Последний раз редактировалось Pr0b3L; 02.11.2006 в 21:40..
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|