Revision: 22095
Updated Code
at December 31, 2009 23:22 by richardw
Updated Code
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
#include <windows.h>
#include <stdio.h>
#include <time.h>
#define MAX_ADAPTER_DESCRIPTION_LENGTH 128 // arb.
#define MAX_ADAPTER_NAME_LENGTH 256 // arb.
#define MAX_ADAPTER_ADDRESS_LENGTH 8 // arb.
//
// IP_ADDRESS_STRING - store an IP address as a dotted decimal string
//
typedef struct
{
char String[4 * 4];
} IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING;
//
// IP_ADDR_STRING - store an IP address with its corresponding subnet mask,
// both as dotted decimal strings
//
typedef struct _IP_ADDR_STRING
{
struct _IP_ADDR_STRING* Next;
IP_ADDRESS_STRING IpAddress;
IP_MASK_STRING IpMask;
DWORD Context;
} IP_ADDR_STRING, *PIP_ADDR_STRING;
//
// ADAPTER_INFO - per-adapter information. All IP addresses are stored as strings
//
typedef struct _IP_ADAPTER_INFO
{
struct _IP_ADAPTER_INFO* Next;
DWORD ComboIndex;
char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
UINT AddressLength;
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
DWORD Index;
UINT Type;
UINT DhcpEnabled;
PIP_ADDR_STRING CurrentIpAddress;
IP_ADDR_STRING IpAddressList;
IP_ADDR_STRING GatewayList;
IP_ADDR_STRING DhcpServer;
BOOL HaveWins;
IP_ADDR_STRING PrimaryWinsServer;
IP_ADDR_STRING SecondaryWinsServer;
time_t LeaseObtained;
time_t LeaseExpires;
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
typedef DWORD (WINAPI* GetAdaptersInfoFunc)(
PIP_ADAPTER_INFO pAdapterInfo, // buffer to receive data
PULONG pOutBufLen // size of data returned
);
///////////////////////////////////////////////////////////////////////////////
void MacAddressToString(const LPBYTE Address, LPSTR lpsz, int nAddressLength = 6)
{
int n;
LPSTR p = lpsz;
for (n = 0; n < nAddressLength; n++)
{
p += sprintf(p, n ? "-%02x" : "%02x", Address[n]);
}
}
//---------------------------------------------------------------------------
AnsiString __fastcall TForm1::GetMac(void)
{
//TODO: Add your source code here
HMODULE hLib;
GetAdaptersInfoFunc GetAdaptersInfo = NULL;
PIP_ADAPTER_INFO pai = NULL;
DWORD dwSize = 0;
CHAR szMac[64];
hLib = LoadLibrary("Iphlpapi.dll");
if (!hLib)
{
//puts("Failed to load Iphlpapi.dll");
exit(1);
}
GetAdaptersInfo = (GetAdaptersInfoFunc)GetProcAddress(hLib, "GetAdaptersInfo");
if (GetAdaptersInfo == NULL)
{
//puts("Failed to load GetAdaptersInfo in Iphlpapi.dll");
}
// Get size of buffer needed:
GetAdaptersInfo(NULL, &dwSize);
pai = (PIP_ADAPTER_INFO)GlobalAlloc(GPTR, dwSize);
GetAdaptersInfo(pai, &dwSize);
PIP_ADAPTER_INFO p = pai;
MacAddressToString(p->Address, szMac, p->AddressLength);
GlobalFree(pai);
FreeLibrary(hLib);
return ((AnsiString)szMac).UpperCase();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btn1Click(TObject *Sender)
{
lbl1->Caption = GetMac();
}
//---------------------------------------------------------------------------
Revision: 22094
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 31, 2009 23:19 by richardw
Initial Code
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
#include <windows.h>
#include <stdio.h>
#include <time.h>
#define MAX_ADAPTER_DESCRIPTION_LENGTH 128 // arb.
#define MAX_ADAPTER_NAME_LENGTH 256 // arb.
#define MAX_ADAPTER_ADDRESS_LENGTH 8 // arb.
//
// IP_ADDRESS_STRING - store an IP address as a dotted decimal string
//
typedef struct
{
char String[4 * 4];
} IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING;
//
// IP_ADDR_STRING - store an IP address with its corresponding subnet mask,
// both as dotted decimal strings
//
typedef struct _IP_ADDR_STRING
{
struct _IP_ADDR_STRING* Next;
IP_ADDRESS_STRING IpAddress;
IP_MASK_STRING IpMask;
DWORD Context;
} IP_ADDR_STRING, *PIP_ADDR_STRING;
//
// ADAPTER_INFO - per-adapter information. All IP addresses are stored as strings
//
typedef struct _IP_ADAPTER_INFO
{
struct _IP_ADAPTER_INFO* Next;
DWORD ComboIndex;
char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
UINT AddressLength;
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
DWORD Index;
UINT Type;
UINT DhcpEnabled;
PIP_ADDR_STRING CurrentIpAddress;
IP_ADDR_STRING IpAddressList;
IP_ADDR_STRING GatewayList;
IP_ADDR_STRING DhcpServer;
BOOL HaveWins;
IP_ADDR_STRING PrimaryWinsServer;
IP_ADDR_STRING SecondaryWinsServer;
time_t LeaseObtained;
time_t LeaseExpires;
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
typedef DWORD (WINAPI* GetAdaptersInfoFunc)(
PIP_ADAPTER_INFO pAdapterInfo, // buffer to receive data
PULONG pOutBufLen // size of data returned
);
///////////////////////////////////////////////////////////////////////////////
void MacAddressToString(const LPBYTE Address, LPSTR lpsz, int nAddressLength = 6)
{
int n;
LPSTR p = lpsz;
for (n = 0; n < nAddressLength; n++)
{
p += sprintf(p, n ? "-%02x" : "%02x", Address[n]);
}
}
//---------------------------------------------------------------------------
AnsiString __fastcall TForm1::GetMac(void)
{
//TODO: Add your source code here
HMODULE hLib;
GetAdaptersInfoFunc GetAdaptersInfo = NULL;
PIP_ADAPTER_INFO pai = NULL;
DWORD dwSize = 0;
CHAR szMac[64];
hLib = LoadLibrary("Iphlpapi.dll");
if (!hLib)
{
//puts("Failed to load Iphlpapi.dll");
exit(1);
}
GetAdaptersInfo = (GetAdaptersInfoFunc)GetProcAddress(hLib, "GetAdaptersInfo");
if (GetAdaptersInfo == NULL)
{
//puts("Failed to load GetAdaptersInfo in Iphlpapi.dll");
}
// Get size of buffer needed:
GetAdaptersInfo(NULL, &dwSize);
pai = (PIP_ADAPTER_INFO)GlobalAlloc(GPTR, dwSize);
GetAdaptersInfo(pai, &dwSize);
PIP_ADAPTER_INFO p = pai;
MacAddressToString(p->Address, szMac, p->AddressLength);
GlobalFree(pai);
FreeLibrary(hLib);
return ((AnsiString)szMac).UpperCase();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btn1Click(TObject *Sender)
{
lbl1->Caption = GetMac();
}
//---------------------------------------------------------------------------
Initial URL
Initial Description
获å–MAC地å€
Initial Title
获å–MAC地å€
Initial Tags
mac
Initial Language
C++