亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

WinCE自啟動Shell的問題

系統 2080 0

WinCE 開機即運行定制的 Shell 是很多系統的基本要求,有時還需要屏蔽 WinCE 自帶的 Shell WinCE 中程序的自啟動,一般有兩個實現方法,修改注冊表和添加自啟動快捷方式。修改注冊表比較方便,如下:

[HKEY_LOCAL_MACHINE/init]
"Launch70"="MyApp.exe"
"Depend70"=hex:14,00,1e,00

只要將 MyApp.exe 打包到 NK ,并在 platform.reg 中加入上面的注冊表信息,這樣 WinCE 啟動時便會自動運行該程序。但這時 WinCE 自帶的 Shell 總是先出來,然后才運行 MyApp.exe ,為了避免這種情況,我們可以將注冊表設置修改如下:

[HKEY_LOCAL_MACHINE/init]
"Launch50"="MyApp.exe"
"Depend50"=hex:14,00,1e,00

即將原來啟動 explorer.exe 的值換為 MyApp.exe 。這樣 WinCE 啟動時直接進入定制的 Shell ,而不啟動 explorer.exe 。但這時有可能引入了新問題,如果定制的 Shell 是基于 MFC 編寫的,并且其中用到了如 CFileDialog 等類庫時,就會出現意想不到的情況,如下圖所示:

WinCE自啟動Shell的問題

上圖是在不啟動 Explorer.exe 時,嘗試導入注冊表文件出現的狀況截圖,而在啟動 explorer.exe 時是沒有問題的。這說明 CFileDialog 在某種程度上依賴于 explorer.exe ,具體細節沒研究。但說明不啟動 explorer.exe ,基于 MFC Shell 運行時就可能會出問題。所以 explorer.exe 必須啟動,但又不能出現 WinCE 界面。要解決這個問題自然就想到修改 explorer.exe 了。 WinCE5.0 WinCE6.0 中,這一部分的代碼都是公開的,在 WinCE6.0 Shell 的相關代碼在 C:/WINCE600/PUBLIC/SHELL/OAK/HPC/EXPLORER/MAIN 目錄下。

大致看了一下這一部分的代碼,發現只需修改如下兩個文件,就應該能實現需求。

C:/WINCE600/PUBLIC/SHELL/OAK/HPC/EXPLORER/MAIN/desktop.cpp


bool CDesktopWnd::Create()
{

IShellFolder *pSHF;
FOLDERSETTINGS fs;
RECT rc;
HRESULT hr = E_FAIL;

// Get a shell folder for the desktop
hr = SHGetDesktopFolder(
&pSHF );
if(hr || !pSHF)
goto Cleanup;

// create a shell view for it
hr = pSHF->CreateViewObject(NULL, IID_IShellView, (LPVOID *)
&_psv );
if(hr || !_psv)
goto Cleanup;

fs.ViewMode = FVM_ICON;
fs.fFlags = FWF_DESKTOP | FWF_ALIGNLEFT | FWF_NOSCROLL;

//++changed by hjb
//將Desktop的窗口大小設為0
//SetRect(
&rc , 0, 0, GetSystemMetrics(SM_CXVIRTUALSCREEN), GetSystemMetrics(SM_CYVIRTUALSCREEN));
SetRect(
&rc , 0, 0, 0, 0);
//--changed by hjb

// create the desktop's view window (no need to AddRef since CreateViewWindow does it)
hr = _psv->CreateViewWindow(NULL,
&fs , (IShellBrowser *)this, &rc , &_hWnd );
if(hr || !_hWnd)
{
Release();
goto Cleanup;
}

RegisterDesktop(_hWnd);

Cleanup:
if(pSHF)
pSHF->Release();

return (hr == S_OK);
}

C:/WINCE600/PUBLIC/SHELL/OAK/HPC/EXPLORER/MAIN/explorer.cpp


DWORD WINAPI CreateTaskBar(LPVOID pEvent)
{
HANDLE hSyncEvent = *((HANDLE *) pEvent);
CTaskBar *pTaskBar = NULL;
HWND hwndTB = NULL;

pTaskBar = new CTaskBar;

//++added by hjb
//在創建任務欄時強制終止
if(pTaskBar)
{
delete pTaskBar;
SetEvent(hSyncEvent);
return 0;
}
//--added by hjb

if(!pTaskBar)
{
SetEvent(hSyncEvent);
return 0;
}

g_TaskBar = pTaskBar;
if(!pTaskBar->Register(g_hInstance))
{
g_TaskBar = NULL;
delete pTaskBar;
SetEvent(hSyncEvent);
return 0;
}

RegisterTaskBar(pTaskBar->GetWindow());
SetEvent(hSyncEvent);

DWORD dwRet = pTaskBar->MessageLoop();

delete pTaskBar;

return dwRet;
}

修改完這兩處后,先編譯該目錄,然后再重新編譯整個系統 ( 執行 Sysgen) 應該就可以了。 Explorer.exe 依然啟動,依然可以聽到 WinCE 啟動的聲音,但 WinCE 的界面已經屏蔽掉了。此時,基于 MFC Shell 也能正常工作,如下圖所示:

WinCE自啟動Shell的問題

在實際操作時,我沒有通過修改源代碼編譯來完成這個測試。因為在編譯 C:/WINCE600/PUBLIC/SHELL/OAK/HPC/EXPLORER/MAIN 目錄時,發現它只生成了 explorer.lib 。考慮到重新編譯整個系統的時間太長,所以直接修改了工程目錄下的 explorer.exe 的文件, MakeImg 后測試的。這里應該有快速編譯的方法,但目前不知怎么弄。

修改后,在 WinCE6.0 的模擬器中測試,達到了預想的效果。這樣就大概解決了基于 MFC Shell Explorer.exe 之間的矛盾,是不是有隱患還不清楚,目前看來沒問題。

另外需要注意,修改 public private 目錄下的文件時,一定先做好備份,以免后患。

修改后的 WinCE6.0 explorer.exe 及演示視頻的下載地址 :

http://www.cnblogs.com/we-hjb/archive/2008/12/28/1364070.html

http://files.cnblogs.com/we-hjb/WinCE_Shell.rar

WinCE自啟動Shell的問題


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 四虎hu | 四虎永久免费地址在线观看 | 老司机性视频 | 国产中文字幕第一页 | 亚洲国产日韩综合久久精品 | 天天色天天操综合网 | 羞羞免费观看视频 | 嘿咻成人免费视频欧美激情 | 四虎影视com88 | 亚洲国产欧美日韩 | 久久久久国产一级毛片高清版 | 日韩免费视频一区二区 | 中文字幕在线最新在线不卡 | 国产第一综合另类色区奇米 | 亚洲黄色大片 | 2019偷偷狠狠的日日 | 国产日韩欧美成人 | 亚洲精品视频一区 | 国产毛片久久久久久国产毛片 | 七月婷婷精品视频在线观看 | 国产一级淫片a视频免费观看 | 亚洲精品自产拍在线观看 | 久草在线视频在线 | 欧美毛片网 | 国产美女流白浆的免费视 | 国产免费高清视频 | 国产成年人视频 | 天天射天天 | 亚洲国产成人久久一区久久 | 国产婷婷| 日韩精品一 | 日本高清不卡视频 | 国产精品嘿咻嘿咻在线播放 | 国产精品蜜臀 | 色综合天天综合网国产成人 | 日日噜噜噜夜夜爽爽狠狠图片 | 成人凹凸短视频在线观看 | 日本中文字幕有码 | 国产精品久久久久久久久免费观看 | 自拍视频精品 | 成人免费黄色 |