2007年3月3日土曜日

C#でMACアドレス取得

久々にプログラムでも組もうかと窓の杜を眺めていたら、

IPアドレスのダイアログ・コマンドライン入力でMACアドレス取得「MacLookup」


なるものを発見。

真似してつくってみました(真似だけじゃ寂しいので、メインネットワークカードのMACアドレスが初期表示されるようにした。すごいぜ!進化してる)

MacALookup
DLはコチラ ※C#で作ったので要.NetFramework2.0です

30分くらいでできちゃった・・・というか、このソフトの使い道が思いつかない・・・・まぁいいか。
ソースも公開しておきます(続きページで。)

うーむ。以前作った

ダイエット管理ソフト「腹八分」

は、4,5日かかってます。
こりゃ「窓の杜」に応募してみるかな。


■C#のTIPS

興味がない方ごめんなさい。プログラマの方は以下をどうぞ


・IPアドレスからMACアドレスを取得

[DllImport("iphlpapi.dll"(, ExactSpelling = true)]
public static extern int SendARP(UInt32 DestIP, UInt32 SrcIP, [Out] byte[] pMacAddr, ref int PhyAddrLen);
public void GetMacAddress(uint ipAddr)
{
  byte[] macAddr = new byte[6];
  int lenPhyAddr = 6;
  int hr = SendARP(ipAddr, 0, macAddr, ref lenPhyAddr);
  textBox1.Text = string.Format("{0,2:X}:{1,2:X}:{2,2:X}:{3,2:X}:{4,2:X}:{5,2:X}",
  macAddr[0], macAddr[1], macAddr[2], macAddr[3], macAddr[4], macAddr[5]);
}

・文字列をIPアドレスに変換

IPAddress ipAddr = IPAddress.Parse(textBox2.Text);
GetMacAddress((uint)ipAddr.Address);

・クリップボードにコピー
Clipboard.SetDataObject(textBox1.Text, true);

・ホスト名からIPアドレスを取得

IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
IPAddress ipAddr = host.AddressList[0];
textBox2.Text = ipAddr.ToString();
GetMacAddress((uint)ipAddr.Address);

これで全部。
シンプルですね。

2 件のコメント:

  1. へなちょこ2007年3月27日 21:43

    ルーターの接続設定、ファイルサーバーの設定とかで、アクセス許可→Macアドレス指定とか設定するときに、ケース開けずに見れると便利だよね。

    返信削除
  2. へなちょこさん、こんにちわ
    そうですねー。ケース開けずに見れるのが便利です。
    ただ、DOS窓から
    >ipconfig /all
    と打っても確認が可能なのでわざわざツールにする必要があるのかは疑問だったりします(^^;

    返信削除