WindowsでipconfigでNIC情報を取得


ネットワークプログラミングではMACアドレスを使用する場合がありますが、VC++を使用する場合はUCHAR Netbios(
  PNCB
pncb   /* pointer to the network control block*/) ; . , MAC , !
を使用できます.  JAVA MAC , IPCONFIG 。 。   : typedef struct _tagAdapterInfo{
 CString Description;//
 CString PhysicalAddr;//MAC
 CString IpAddr[64];//IP 64
 CString SubnetMask[64];// IP 64
 CString Gateway;//
 LONG lIpNum;// IP
}AdapterInfo,*PAdapterInfo;

  : int GetAllAdapterInfo(CArray<AdapterInfo,AdapterInfo>& AdapterInfoList, CString& Error);

int CTestDlg::GetAllAdapterInfo(
CArray&AdapterInfoList,CString Error){HANDLE hRead,hWrite;// ハンドルCString strErrorを する//エラーメッセージCString strCon,strBuf;BOOL nReturn;char buffer[2048]={0} LPSTR p="ipconfig/all"; unsigned long lnReadNum; int nIndex=0,from=0,to=0,nLoop=0; STARTUPINFO  sa; PROCESS_INFORMATION pinfo; SECURITY_ATTRIBUTES saPipe;  saPipe.nLength= sizeof( SECURITY_ATTRIBUTES ); saPipe.lpSecurityDescriptor = NULL; saPipe.bInheritHandle       = TRUE;if(!CreatePipe(&hRead,&hWrite,&saPipe,0)//パイプの {strError.Format("CREATE PIPE ERRORCODE:%d",GetLastError();Error=strError;return 1; } memset( &sa, 0, sizeof(sa));  sa.cb=sizeof(sa); sa.dwFlags=STARTF_USESHOWWINDOW |STARTF_USEstdHANDLES; sa.wShowWindow = SW_HIDE;  sa.hStdOutput=hWrite; sa.hStdError=hWrite;
// プロセスnReturn=::CreateProcess(NULL,p,&saPipe,&saPipe,&saPipe,TRUE,0,NULL,&sa,&pinfo); if (!nReturn) {  strError.Format("CREATE PROCESS ERRORCODE:%d",GetLastError());  Error=strError;  return 2; } //Sleep(1000); CloseHandle( pinfo.hThread );     CloseHandle( pinfo.hProcess ); CloseHandle( hWrite);//リードパイプの do{memset(buffer,02048);nReturn=ReadFile(hRead,buffer,MAX_PATH,&lnReadNum,NULL);if(nReturn){strBuf.Format("%s",buffer);strCon+=strBuf;   }   }while(nReturn&&lnReadNum);
  AdapterInfo info;
// でカード を す
 do  {  nIndex=strCon.Find("Description",nIndex);  if (nIndex<=-1)  {   break;  }  from=strCon.Find(":",nIndex)+2;  to=strCon.Find("/n",from);  info.Description=strCon.Mid(from,to-from-1);  nIndex=to;  nIndex=strCon.Find("Physical Address",nIndex);  from=strCon.Find(":",nIndex)+2;  to=strCon.Find("/n",from);  info.PhysicalAddr=strCon.Mid(from,to-from-1);  nIndex=to;  nLoop=0;  while(nLoop<64)  {   nIndex=strCon.Find("IP Address",nIndex);   if (nIndex<=-1)   {    break;   }   from=strCon.Find(":",nIndex)+2;   to=strCon.Find("/n",from);   info.IpAddr[nLoop]=strCon.Mid(from,to-from-1);   nIndex=to;   nIndex=strCon.Find("Subnet Mask",nIndex);   from=strCon.Find(":",nIndex)+2;   to=strCon.Find("/n",from);   info.SubnetMask[nLoop]=strCon.Mid(from,to-from-1);   nLoop++;  }  info.lIpNum=nLoop;  nIndex=to;  nIndex=strCon.Find("Default Gateway",nIndex);  from=strCon.Find(":",nIndex)+2;  to=strCon.Find("/n",from);  info.Gateway=strCon.Mid(from,to-from-1);  AdapterInfoList.Add(info); }while(TRUE); return 0;} はただパイプの1 の も な で、みんなと かち います!また、IPヘルプ を してIPを することもできます.