[Windows Mobile]取得行動裝置的識別碼 UniqueID
1. 問題描述
如何取得 Windows Mobile 行動裝置的識別碼 ( UniqueID )
2. 方法
使用 Windows API 中的 GetDeviceUniqueID : 此函式回傳裝置識別碼,我們可以應用此識別碼去辨識行動裝置。
關於 GetDeviceUniqueID 使用可參考 pinvoke.net 內的說明
程式碼
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
// System.Runtime.InteropServices 命名空間 : 提供各種支援 COM Interop 和平台叫用服務的成員
using System.Runtime.InteropServices;
namespace GetDeviceUniqueID
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[DllImport("coredll.dll")]
private extern static int GetDeviceUniqueID([In, Out] byte[] appdata,
int cbApplictionData,
int dwDeviceIDVersion,
[In, Out] byte[] deviceIDOuput,
out uint pcbDeviceIDOutput);
private void btnGetUniqueID_Click(object sender, EventArgs e)
{
this.txtUniqueID.Text = string.Empty;
byte[] id = GetDeviceID("myAppName");
for (int i = 0; i < id.Length; i++)
{
txtUniqueID.Text += id[i].ToString("X2"); // 將取得的 UniqueID 轉換成大寫16進制
txtUniqueID.Text += "-";
}
txtUniqueID.Text = txtUniqueID.Text.TrimEnd('-');
}
private byte[] GetDeviceID(string AppString)
{
byte[] AppData = Encoding.Unicode.GetBytes(AppString);
int appDataSize = AppData.Length;
byte[] DeviceOutput = new byte[20];
uint SizeOut = 20;
GetDeviceUniqueID(AppData, appDataSize, 1, DeviceOutput, out SizeOut);
return DeviceOutput;
}
}
}
執行結果
3. 參考