ENGLISH page is here.
GET DinopSearchBar
サイト内検索:
HOME
VC++ TIPS
ダウンロード
DinopExifReader
DinopSearchBar
DinopSearchBar mini
DinopTabbingBar
for Firefox
大阪湾の生き物
甲子園浜の自然
甲子園浜の干潟
甲子園浜の水中
甲子園浜の野鳥
近畿の山々
植物図鑑
箕面マップ
水中機材
カメラ
ランキング
望遠鏡の世界
顕微鏡の世界
Googleのすべて
GoogleマップAPI
ニュース
読んだ本
日記
変な料理の作り方
遺伝子操作
論文紹介
デイトレード
自動売買でFX
ネットで小遣い稼ぎ
Solaris
電子工作
その他
問い合わせ
VC++用コード集
大阪湾の生き物
水中用機材
since:2000/11/15
dinopcom@gmail.com
www.dinop.comは
だいのっぷ・どっと・こむ
と読んでください。







« なぜ突然に毒性が、スギヒラタケ脳症の犯人はたんぱく質? | メイン | MACアドレスの取得(NETBIOS) »

MACアドレスの取得(I.P.Helperその2)




解説

 ネットワークアダプタのMACアドレス取得にはいくつかの方法がある。 「VC ++TIPS」にはここのものとは異なる方法での取得を紹介しています。
 ここではPlatform SDK(Internet Protocol Helper)を使用したMACアドレス取得 方法を紹介する。
 ビルドにはPlatform SDKのインストールが必須。

 この方法はWindows98以降に対応(Windows 95 非対応!:Windows NT4.0はSP4以降に対応)。


サンプル

void Test() 
{
	int		i;
	CString			strMessage;
	CStringArray	astrMacAddress;

	if(GetMacAddress(astrMacAddress) == false)
	{
		AfxMessageBox("取得できませんでした");
		return;
	}

	for(i = 0; i < astrMacAddress.GetSize(); i++)
	{
		strMessage += astrMacAddress[i];
		strMessage += "\n";
	}

	AfxMessageBox(strMessage);
}


取得部分

#include "afxtempl.h"
#include "iphlpapi.h"

#pragma comment(lib,"iphlpapi.lib") 

//
//	ビルド時 PMIB_ICMP_EX のエラーが出る場合は
//	iphlpapi.h内のGetIcmpStatisticsEx() をコメ
//	ントアウト!(どこで定義されてるの??)
//


//	Platform SDK: Internet Protocol Helper
//
//	GetIfTable() によるMACアドレスの取得
//
//		Windows98以降に対応(Windows 95 非対応!:Windows NT4.0はSP4以降に対応)
//
bool	GetMacAddress(CStringArray& astrMacAddress)
{
	DWORD			ret;
	ULONG			i;
	ULONG			dwSize;
	BYTE*			pBuff;
	PMIB_IFTABLE	pIfTable;
	CString			strBuff;

	astrMacAddress.RemoveAll();

	dwSize = 0;
	::GetIfTable(NULL,&dwSize,TRUE);			//必要バッファサイズ取得

	pBuff = new BYTE[dwSize];
	pIfTable = (PMIB_IFTABLE) pBuff;

	ret = ::GetIfTable(pIfTable,&dwSize,TRUE);
	if(ret == NO_ERROR)
	{
		for(i = 0; i < pIfTable->dwNumEntries; i++)
		{
			strBuff.Format("%02X%02X%02X%02X%02X%02X\n"
					,pIfTable->table[i].bPhysAddr[0]
					,pIfTable->table[i].bPhysAddr[1]
					,pIfTable->table[i].bPhysAddr[2]
					,pIfTable->table[i].bPhysAddr[3]
					,pIfTable->table[i].bPhysAddr[4]
					,pIfTable->table[i].bPhysAddr[5]);
			astrMacAddress.Add(strBuff);
		}
	}
	delete	pBuff;

	if(astrMacAddress.GetSize() > 0)
		return	true;
	return	false;
}









Copyright (c) 1999-2007 issei. All rights reserved. (運営者情報