Mirror

Checking for a LAN connection (Views: 100)


Problem/Question/Abstract:

Checking for a LAN connection

Answer:

To check for a LAN connection, various things can be done, like checking for your user name, or retrieving logon information from the registry, but they can all fail if you consider a dock able notebook. The following function searches for actual existing connections.

const
  MAX_NEIGHBORS = 20;

function NetAvailable: Boolean;
var
  NetRes: array[0..MAX_NEIGHBORS] of TNetResource;
  NNError,
    hEnum,
    EntryCount,
    NetResLen: DWORD;
  loop1: Integer;
begin
  hEnum := 0;
  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
      begin
        ShowMessage('Network Neighborhood Detection Failed.')
      end;
  end
end;

<< Back to main page