Нужно проверить наличие локалки, подскажите через что можно реализовать wininet.INTERNET_CONNECTION_LAN не возращяет правельного результата
Можно попробывать так: Code: 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. Или так Code: if GetSystemMetrics(SM_NETWORK) and $01 = $01 then MessageBoxA(0,'LAN Connection','lan',0);
Code: InternetGetConnectedState(@flags,0); if (flags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN Зачем так усложнять Code: var Flag :DWord; isLan:Boolean; begin Flag := INTERNET_CONNECTION_LAN; isLan := InternetGetConnectedState(@Flag,0); case isLan of true : ShowMessage('Connected'); false : ShowMessage('disConnected'); Code: if GetSystemMetrics(SM_NETWORK) and $01 = $01 then MessageBoxA(0,'LAN Connection','lan',0); Вообще непонятная функция,вернет true если подключено любое сетевое устройство,справка тоже ничего хорошего нам не говорит Можно еще так Code: function InetIsOffline(Flag: Integer): Boolean; stdcall; external 'URL.DLL' Но это уже к интернету %)
Можно попробывать поискать компьютеры в сети, и если найдешь хоть один, то локальная сеть найдена. Code: 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
у меня сработал только вариант с поиском компов в сети %) TaNkist, держи + а че плюс то не добавляется? =/