[Windows Mobile]取得行動裝置的識別碼 UniqueID

  • 7115
  • 0
  • 2013-04-15

[Windows Mobile]取得行動裝置的識別碼 UniqueID

 

1. 問題描述

如何取得 Windows Mobile 行動裝置的識別碼 ( UniqueID )

 

2. 方法

使用 Windows API 中的 GetDeviceUniqueID : 此函式回傳裝置識別碼,我們可以應用此識別碼去辨識行動裝置。

關於 GetDeviceUniqueID  使用可參考 pinvoke.net 內的說明

image

 

程式碼

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;
        }
    }
}

 

執行結果

image

 

3. 參考

get device unique id