驱动调试助手是针对Windows CE做的,在Windows Mobile中使用会有一些问题,最主要的就是其菜单栏被Windows Mobile系统的任务栏给遮住了,导致相应的功能无法正常使用,如下图所示。
按理来说只要将系统任务栏隐藏就可以,今天在模拟器上实验了一下,看起来是可行的。只是任务栏隐藏后,相应的区域出现画屏,如下图所示。
不知道画屏是不是模拟器的缘故,暂且不管先。驱动调试助手的菜单隐约可见,简单测试了下其中的注册表搜索的功能,也正常工作,如下图所示。
实现方法如下,借助于一个WMDM.exe的程序,通过它隐藏系统任务栏并将同一目录下的DM.exe启动起来,在DM.exe退出后,恢复显示系统任务栏,代码如下。
1
HWND hWnd;
2 DWORD dwLen;
3 PROCESS_INFORMATION pi;
4 TCHAR szPath[MAX_PATH];
5
6 dwLen = GetModuleFileName(NULL, szPath, MAX_PATH);
7 if ( ! dwLen)
8 {
9 return 0 ;
10 }
11
12 while (szPath[ -- dwLen] != _T( ' \\ ' ))
13 {
14 szPath[dwLen] = _T( ' \0 ' );
15 }
16 wcscat(szPath, _T( " DM.exe " ));
17
18 hWnd = FindWindow(_T( " HHTaskBar " ), NULL);
19 if (hWnd)
20 {
21 EnableWindow(hWnd, FALSE);
22 ShowWindow(hWnd, SW_HIDE);
23 }
24
25 if (CreateProcess(szPath, NULL, NULL, 0 , FALSE, 0 , NULL, NULL, NULL, & pi))
26 {
27 WaitForSingleObject(pi.hProcess, INFINITE);
28 CloseHandle(pi.hThread);
29 CloseHandle(pi.hProcess);
30 }
31
32 EnableWindow(hWnd, TRUE);
33 ShowWindow(hWnd, SW_SHOW);
2 DWORD dwLen;
3 PROCESS_INFORMATION pi;
4 TCHAR szPath[MAX_PATH];
5
6 dwLen = GetModuleFileName(NULL, szPath, MAX_PATH);
7 if ( ! dwLen)
8 {
9 return 0 ;
10 }
11
12 while (szPath[ -- dwLen] != _T( ' \\ ' ))
13 {
14 szPath[dwLen] = _T( ' \0 ' );
15 }
16 wcscat(szPath, _T( " DM.exe " ));
17
18 hWnd = FindWindow(_T( " HHTaskBar " ), NULL);
19 if (hWnd)
20 {
21 EnableWindow(hWnd, FALSE);
22 ShowWindow(hWnd, SW_HIDE);
23 }
24
25 if (CreateProcess(szPath, NULL, NULL, 0 , FALSE, 0 , NULL, NULL, NULL, & pi))
26 {
27 WaitForSingleObject(pi.hProcess, INFINITE);
28 CloseHandle(pi.hThread);
29 CloseHandle(pi.hProcess);
30 }
31
32 EnableWindow(hWnd, TRUE);
33 ShowWindow(hWnd, SW_SHOW);
WMDM的下载地址:http://files.cnblogs.com/we-hjb/WMDM.rar,其中包括了ARMV4I版本的DM.exe。