2016-08-27 4 views
-2

Windows에서 활성 네트워크 및 연결된 네트워크의 이름을 Delphi 코드로 찾으려합니다. 둘 이상있을 수 있습니다. 윈도우 10은 연결된 하나, NETGEAR21에서이 스크린 샷에서현재 네트워크 이름 얻기

Example of network

. 누군가 대답 할 수 있으면 감사 할 것입니다.

+0

두 개 이상일 수 있습니다. 어느 것을 원하니? –

+0

좋아, 내가 질문에 명확하게. 나는 목록을 원해. 흔히 단 하나의 네트워크입니다. 그러나 당신은 정확할 수 있습니다. –

+1

무엇을 시도 했습니까? –

답변

1

https://theroadtodelphi.com/2015/10/28/using-the-network-list-manager-nlm-api-from-delphi/에 설명 된대로 네트워크 목록 관리자에 대한 인터페이스를 먼저 만들면 작동합니다. 이렇게하면 필요한 파일 NETWORKLIST_TLB.pas가 생성됩니다. 최소 구현은 다음과 같습니다.

unit ListTypes; 

interface 

uses 
    ActiveX, 
    NETWORKLIST_TLB, 
    ComObj; 

function SetUpAndGetConnections: String; 
function GetConnections: string; 

implementation 

uses 
    SysUtils, 
    Windows; 

function SetUpAndGetConnections: String; 
begin 
    CoInitialize(nil); 
    try 
    Result := GetConnections; 
    finally 
    CoUninitialize; 
    end; 
end; 

function GetConnections: String; 
var 
    NetworkListManager: INetworkListManager; 
    EnumNetworkConnections: IEnumNetworkConnections; 
    NetworkConnection : INetworkConnection; 
    pceltFetched: ULONG; 
begin 
    NetworkListManager := CoNetworkListManager.Create; 
    EnumNetworkConnections := NetworkListManager.GetNetworkConnections(); 
    Result := ''; 
    while true do 
    begin 
    EnumNetworkConnections.Next(1, NetworkConnection, pceltFetched); 
    if (pceltFetched>0) then 
     Result := Result + NetworkConnection.GetNetwork.GetName + #13#10 
    else 
     Break; 
    end; 
end; 

end.