using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices;//提供了一个方法集,这些方法用于分配非托管内存、复制非托管内存块、将托管类型转换为非托管类型,此外还提供了在与非托管代码交互时使用的其他杂项方法 namespace LogisticsManage { 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 button1_Click(object sender, EventArgs e) { byte[] buffer = GetDeviceID("MyAppString"); StringBuilder sb = new StringBuilder(); for (int x = 0; x < buffer.Length; x++) { //sb.Append('{'); sb.Append(string.Format("{0:x2}", buffer[x])); //sb.Append("} "); } textBox1.Text = sb.ToString(); } private byte[] GetDeviceID(string AppString) { // Call the GetDeviceUniqueID byte[] AppData = new byte[AppString.Length]; for (int count = 0; count < AppString.Length; count++) AppData[count] = (byte)AppString[count]; int appDataSize = AppData.Length; byte[] DeviceOutput = new byte[20]; uint SizeOut = 20; GetDeviceUniqueID(AppData, appDataSize, 1, DeviceOutput, out SizeOut); return DeviceOutput; } } }