WINCE的快捷方式
1.WINCE快捷方式結(jié)構(gòu)
WINCE的快捷方式和WIN2K,XP的不同,只是一個(gè)后綴名為.LNK的文本文件.
其格式如下:
數(shù)字#路徑
比如,有個(gè)快捷方式寫法如下:
23#WindowsToolViewer.exe
指的是指向WINDOWS文件夾下的Toolviewer.exe可執(zhí)行文件.數(shù)字究竟代表的是什么意思,我也不太清楚;有一說法是#后的ACSII字符 的數(shù)量,但如果把上述例子改為1#WindowsToolViewer.exe也可正常運(yùn)行,但去掉數(shù)字則系統(tǒng)無法識(shí)別.雖然可以正常使用,但建議還 是按照文檔#之后的ACSII字符數(shù)量填寫.
2.如何把快捷方式加到內(nèi)核中
假設(shè)我們有一快捷方式EnglishExp.lnk,要將其加到內(nèi)核中.
在PB環(huán)境中打開工程,在project.bib文件的FILES字段中添加:
EnglishExp.lnk $(_WINCEROOT)PLATFORMMyAPPCEnglishExp.lnk NK H
其中 $(_WINCEROOT)指的是PC機(jī)子上PB安裝的根目錄,H指的是文件屬性,意義代表如下:
S:系統(tǒng)
H:隱藏
R:壓縮的資源文件
C:壓縮文件
U:非壓縮文件
3.如何把快捷方式放到桌面
語法如下:Directory(”欲拷貝至的文件夾”):-File(”更改的名稱”,”要拷貝的文件”)
假設(shè)我們有一快捷方式EnglishExp.lnk,要將其放到桌面,并把快捷方式的名稱改為”英語”
在PB的project.dat文件加入此句:
Directory(”WindowsLOC_DESKTOP_DIR”):-File(”英語.lnk”,”WindowsCEnglishExp.lnk”)
包含在內(nèi)核里面的文件全部釋放到”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機(jī)的操作系統(tǒng)中可以通過修改注冊(cè)表來取消快捷方式左下角的小箭頭,但在WINCE中注冊(cè)表沒有關(guān)于取消小箭頭的鍵值(可能我沒找到^_^).在這里我采用的是直接修改資源文件的做法.
打開shcore.res文件,其中文的路徑在 $(_WINCEROOT)PUBLICCOMMONOAKLIBARMV4IRETAIL804,然后將1205的ICO的小箭頭刪 掉即可.注意,不是刪除ID為1205的ICO圖標(biāo),是刪除ICO圖標(biāo)中的內(nèi)容.
5.微軟應(yīng)用程序的快捷方式
如果在PB中添加了微軟的應(yīng)用軟件,便會(huì)在桌面和程序中添加其快捷方式;如果覺得快捷方式礙眼,可以將其注釋掉再編譯即可.
現(xiàn)在列出一些dat文件中定義的微軟應(yīng)用軟件的快捷方式:
wceappsfe.dat (C:WINCE420PUBLICWCEAPPSFEOAKFILES),內(nèi)含:pmail,wordpad
wceshellfe.dat (C:WINCE420PUBLICWCESHELLFEOAKFILES),內(nèi)含:iexplore,幫助文檔在”help”文件夾的快捷方式
viewers.dat (C:WINCE420PUBLICVIEWERSOAKFILES), 內(nèi)含:pdfviewer,imageviewer,Presviewer,Docviewer
directx.dat (C:WINCE420PUBLICDIRECTXOAKFILES),內(nèi)含:Media Player,DVD Player
6. 修改默認(rèn)shell
其實(shí)讓一個(gè)程序在wince里啟動(dòng)和windows里差不多,直接設(shè)置其為啟動(dòng)項(xiàng),這個(gè)有幾個(gè)方法。一個(gè)就是制作一個(gè)快捷方式,指向我們的應(yīng)用程序如app.exe,然后將快捷方式放到windowsstartup下面。
步驟如下:(假設(shè)app.exe已經(jīng)拷貝到windows下面)
在pb中創(chuàng)建一個(gè)文件,文件類型選txt,然后命名為.lnk后綴,假設(shè)名字為test.lnk
編輯其內(nèi)容為: 16#windowsapp.exe
備注:前面的16是# 后面所有字符的總和,包括空格。Wince的幫助文檔上說這么定義就行,但是我嘗試后,最后down到目標(biāo)機(jī)上面時(shí)提示找不到文件,在wince里查看這 么創(chuàng)建的test.lnk的屬性,發(fā)現(xiàn)其指向windowsapp.exe后面還有兩個(gè)方框,因此不對(duì),我的解決方法是修改test.lnk的內(nèi)容為 16#”Windowsapp.exe”
編輯好lnk文件內(nèi)容后在pb中修改project.bib
在files段后面添加下面一行:(和添加別的文件到image中類似,也要在pb的flatform菜單的setting下添加build語句,同上,不再贅述)
test.lnk $(_FLATRELEASEDIR)test.lnk NK S
project.dat
增加下面一行:
Directory(”Windowsstartup”):-File(”test.lnk”,”Windowstest.lnk”)
這樣后系統(tǒng)啟動(dòng)后就會(huì)自動(dòng)啟動(dòng)我們的程序了
另外一種方法是編輯注冊(cè)表:在project.reg中添加如下內(nèi)容
[HKEY_LOCAL_MACHINEinit]
“Launch80″=”app.exe”
“Depend80″=hex:14,00,1e,00
這個(gè)是設(shè)定啟動(dòng)順序,launch后面的數(shù)字越大的越是后啟動(dòng),Depend80后面的指定依賴項(xiàng),為16進(jìn)制,上面的語句表明依賴項(xiàng)為launch20 定義的device.exe和launch30中定義的gwes.exe, 注意Launch后面的數(shù)字范圍為0到99 ,此范圍之外的將不會(huì)有效果。
這樣兩種方法的效果都是系統(tǒng)都是系統(tǒng)先啟動(dòng)資源管理器explorer.exe(就是看到的默認(rèn)桌面),然后啟動(dòng)我們的程序,(如果利用 taskman shell然后去掉任務(wù)欄那么效果更好)但是這樣還不夠,我們?nèi)绾尾伙@示桌面,直接顯示我們的程序呢?
網(wǎng)上有人介紹的方法是去掉standard shell,但是我編譯總是報(bào)錯(cuò)。我采用的方法是替換注冊(cè)表中l(wèi)auch50中的explorer.exe為我的app.exe,即搞定。
修改注冊(cè)表的方法:先把帶KITL的系統(tǒng)跑起來,在PB的TOOLS->Remote registry editor里修改,驗(yàn)證有效后,再去修改platfrom.reg, 或者自己寫個(gè)REG文件,然后在platform.reg里INCLUDE進(jìn)來 SYSGEN后確認(rèn)PBWORKSPACE里相關(guān)項(xiàng)目的REL目錄里reginit.ini文件里包含了自己做的修改后make image然后DOWNLOAD下去就OK了。
值得補(bǔ)充的是,我們前面介紹的步驟中那個(gè)修改平臺(tái)setting,添加語句的,是因?yàn)槲颐看味际侵匦聅ysgen和build,如果只是簡(jiǎn)單的 make image的話(都是pb中的build OS菜單下的命令),那么將直接用release中的內(nèi)容,因此也可以直接將文件放到release文件夾,然后改project.bib等實(shí)現(xiàn)往 image中添加文件。 同樣,也可以直接修改release中的shell.reg中的launch50值為我們自己的程序(或者類似修改reginit.ini文件, reginit.ini文件存放有所有wince的靜態(tài)注冊(cè)表,來達(dá)到去掉桌面,直接啟動(dòng)我們程序的效果)。[!--empirenews.page--]
注意,這么啟動(dòng)的程序,如果點(diǎn)擊關(guān)閉,就會(huì)死機(jī)的,因?yàn)闆]有窗口運(yùn)行了。實(shí)際運(yùn)用中,當(dāng)然不會(huì)讓用戶關(guān)閉我們的程序,除非他一起關(guān)閉系統(tǒng)。
如果也需要build的話,可以通過往image中添加文件的方法將我們改好的shell.reg添加到release目錄。