Wince 6.0 教程—第六課 WINCE捷徑詳解

來源:互聯網
上載者:User

 第六課 WINCE捷徑詳解

 

1.WINCE捷徑結構

WINCE的捷徑和WIN2K,XP的不同,只是一個尾碼名為.LNK的文字檔.

其格式如下:

數字#路徑

比如,有個捷徑寫法如下:

23#/Windows/ToolViewer.exe

指的是指向WINDOWS檔案夾下的Toolviewer.exe可執行檔.數字究竟代表的是什麼意思,我也不太清楚;有一說法是#後的ACSII字元 的數量,但如果把上述例子改為1#/Windows/ToolViewer.exe也可正常運行,但去掉數字則系統無法識別.雖然可以正常使用,但建議還 是按照文檔#之後的ACSII字元數量填寫.
如果中間有空格,那麼應該加上雙引號,例如20#"/sys/My Documents"

 

2.如何把捷徑加到核心中

假設我們有一捷徑EnglishExp.lnk,要將其加到核心中.

在PB環境中開啟工程,在project.bib檔案的FILES欄位中添加:

EnglishExp.lnk $(_WINCEROOT)/PLATFORM/MyAPPC/EnglishExp.lnk NK H

其中 $(_WINCEROOT)指的是PC機子上PB安裝的根目錄,H指的是檔案屬性,意義代表如下:

S:系統
H:隱藏
R:壓縮的資源檔
C:壓縮檔
U:非壓縮檔

 

3.如何把捷徑放到案頭

文法如下:Directory(”欲拷貝至的檔案夾”):-File(”更改的名稱”,”要拷貝的檔案”)

假設我們有一捷徑EnglishExp.lnk,要將其放到案頭,並把捷徑的名稱改為”英語”
在PB的project.dat檔案加入此句:

Directory(”/Windows/LOC_DESKTOP_DIR”):-File(”英語.lnk”,”/Windows/CEnglishExp.lnk”)

包含在核心裡面的檔案全部釋放到”/Windows”檔案夾下.

LOC_DESKTOP_DIR指的是本地案頭.在PB中,常用的還有如下宏定義:
LOC_DESKTOP_DIR: 案頭
LOC_MYDOCUMENTS_DIR: My Documents
LOC_PROGRAMFILES_DIR: Program Files
LOC_FAVORITES_DIR: Favorites
LOC_RECENT_DIR: Recent
LOC_MYDOCUMENTS_DIR: My Documents
LOC_HELP_DIR: Help

更多的定義可以在ceshellfe.str檔案中找到

 

4.消除捷徑的小箭頭

在PC機的作業系統中可以通過修改註冊表來取消捷徑左下角的小箭頭,但在WINCE中註冊表沒有關於取消小箭頭的索引值(可能我沒找到^_^).在這裡我採用的是直接修改資源檔的做法.
開啟shcore.res檔案,其中文的路徑在 $(_WINCEROOT)/PUBLIC/COMMON/OAK/LIB/ARMV4I/RETAIL/0804/,然後將1205的ICO的小箭頭刪 掉即可.注意,不是刪除ID為1205的ICO表徵圖,是刪除ICO表徵圖中的內容.

 

5.微軟應用程式的捷徑

如果在PB中添加了微軟的應用軟體,便會在案頭和程式中添加其捷徑;如果覺得捷徑礙眼,可以將其注釋掉再編譯即可.

現在列出一些dat檔案中定義的微軟應用軟體的捷徑:

wceappsfe.dat (C:/WINCE420/PUBLIC/WCEAPPSFE/OAK/FILES/),內含:pmail,wordpad
wceshellfe.dat (C:/WINCE420/PUBLIC/WCESHELLFE/OAK/FILES/),內含:iexplore,協助文檔在”help”檔案夾的捷徑
viewers.dat (C:/WINCE420/PUBLIC/VIEWERS/OAK/FILES/), 內含:pdfviewer,imageviewer,Presviewer,Docviewer
directx.dat (C:/WINCE420/PUBLIC/DIRECTX/OAK/FILES/),內含:Media Player,DVD Player

 

6. 修改預設shell

其實讓一個程式在wince裡啟動和windows裡差不多,直接設定其為啟動項,這個有幾個方法。一個就是製作一個捷徑,指向我們的應用程式如app.exe,然後將捷徑放到/windows/startup下面。

步驟如下:(假設app.exe已經拷貝到windows下面)

在pb中建立一個檔案,檔案類型選txt,然後命名為.lnk尾碼,假設名字為test.lnk
編輯其內容為: 16#/windows/app.exe

備忘:前面的16是# 後面所有字元的總和,包括空格。Wince的協助文檔上說這麼定義就行,但是我嘗試後,最後down到目標機上面時提示找不到檔案,在wince裡查看這 麼建立的test.lnk的屬性,發現其指向/windows/app.exe後面還有兩個方框,因此不對,我的解決方案是修改test.lnk的內容為 16#”/Windows/app.exe”

編輯好lnk檔案內容後在pb中修改project.bib

在files段後面添加下面一行:(和添加別的檔案到image中類似,也要在pb的flatform菜單的setting下添加build語句,同上,不再贅述)

test.lnk $(_FLATRELEASEDIR)/test.lnk NK S

project.dat

增加下面一行:

Directory(”/Windows/startup”):-File(”test.lnk”,”/Windows/test.lnk”)

這樣後系統啟動後就會自動啟動我們的程式了。

另外一種方法是編輯註冊表:在project.reg中添加如下內容

[HKEY_LOCAL_MACHINE/init]
“Launch80″=”app.exe”
“Depend80″=hex:14,00,1e,00

這個是設定啟動順序,launch後面的數字越大的越是後啟動,Depend80後面的指定依賴項,為16進位,上面的語句表明依賴項為launch20 定義的device.exe和launch30中定義的gwes.exe, 注意Launch後面的數字範圍為0到99 ,此範圍之外的將不會有效果。

這樣兩種方法的效果都是系統都是系統先啟動資源管理員explorer.exe(就是看到的預設案頭),然後啟動我們的程式,(如果利用 taskman shell然後去掉工作列那麼效果更好)但是這樣還不夠,我們如何不顯示案頭,直接顯示我們的程式呢?

網上有人介紹的方法是去掉standard shell,但是我編譯總是報錯。我採用的方法是替換註冊表中lauch50中的explorer.exe為我的app.exe,即搞定。

修改註冊表的方法:先把帶KITL的系統跑起來,在PB的TOOLS->Remote registry editor裡修改,驗證有效後,再去修改platfrom.reg, 或者自己寫個REG檔案,然後在platform.reg裡INCLUDE進來 SYSGEN後確認PBWORKSPACE裡相關項目的REL目錄裡reginit.ini檔案裡包含了自己做的修改後make image然後DOWNLOAD下去就OK了。

值得補充的是,我們前面介紹的步驟中那個修改平台setting,添加語句的,是因為我每次都是重新sysgen和build,如果只是簡單的 make image的話(都是pb中的build OS菜單下的命令),那麼將直接用release中的內容,因此也可以直接將檔案放到release檔案夾,然後改project.bib等實現往 image中添加檔案。 同樣,也可以直接修改release中的shell.reg中的launch50值為我們自己的程式(或者類似修改reginit.ini檔案, reginit.ini檔案存放有所有wince的靜態註冊表,來達到去掉案頭,直接啟動我們程式的效果)。

注意,這麼啟動的程式,如果點擊關閉,就會死機的,因為沒有視窗運行了。實際運用中,當然不會讓使用者關閉我們的程式,除非他一起關閉系統。

如果也需要build的話,可以通過往image中添加檔案的方法將我們改好的shell.reg添加到release目錄。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.