在PALM中﹐每台PDA都有唯一的ID碼﹐我想在WINCE中也應該有類似的ID碼﹐但如何在程序中獲取該ID碼﹖

 

答案就是PPC没有统一的Device ID

如果你为ipaq开发程序,那么两种方法可以取得device id:

 

1 Download Compaq iPAQ SDK 然后用 CPQInfoGetSerialNo function (定义在CPQInfo.h中)取得.

 

2 如果你只想用通用SDK,那么有一个取巧的办法,就是运行\windows\CreateAssetFile.exe ,然后读取自动生成的\windows\cpqAssetData.dat 文件, DeviceID就在里面, 这里有一段程序专门干这事:


 1 CString GetSerialNumber()
 2 
 3 {
 4 
 5 // Start CreateAssetFile.exe
 6 
 7 PROCESS_INFORMATION pi;
 8 
 9 if (!::CreateProcess(TEXT("\windows\CreateAssetFile.exe"),
10 
11 NULL, NULL, NULL, FALSE, 0, NULL, NULL, NULL, &pi))
12 
13 {
14 
15 m_strCompaqIpaqId = _T("");
16 
17 m_strErrorMessage += _T("Cannot run \windows\CreateAssetFile.exe file.");
18 
19 return TEXT("");
20 
21 }
22 
23  
24 
25 // Wait until CreateAssetFile.exe will be finished
26 
27 ::WaitForSingleObject(pi.hProcess, INFINITE);
28 
29  
30 
31 // Read data from cpqAssetData.dat file
32 
33 HANDLE hInFile;
34 
35 TCHAR strSN[65];
36 
37 DWORD dwBytesRead;
38 
39 hInFile = CreateFile(TEXT("\windows\cpqAssetData.dat"), GENERIC_READ,
40 
41 FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
42 
43  
44 
45 if (hInFile == INVALID_HANDLE_VALUE) {
46 
47 m_strCompaqIpaqId = _T("");
48 
49 m_strErrorMessage += _T("Cannot read \windows\cpqAssetData.dat file.");
50 
51 return TEXT("");
52 
53 }
54 
55  
56 
57 SetFilePointer(hInFile, 976, NULL, FILE_BEGIN);
58 
59 memset(strSN, 064 * sizeof(TCHAR));
60 
61 ReadFile(hInFile, &strSN, 64&dwBytesRead, NULL);
62 
63 CloseHandle(hInFile);
64 
65  
66 
67 return CString(strSN);
68 
69 
70 

分类:

技术点:

相关文章: