讓程式在Windows CE系統啟動時自動運行

來源:互聯網
上載者:User
讓程式在 Windows CE 系統啟動時自動運行(方法一)1. 假定Windows CE.NET目標工程目錄為E:/ SMDK2440,並且工程已經Build成功,假定Windows CE.NET的應用程式為MyApp.exe並存放在本地硬碟 E 盤下;2. 修改MyWinCE工程的project.bib檔案,在MODULES添加如下內容:MyApp.exe  E:/MyApp.exe  NK  H 3. 建立捷徑檔案MyApp.lnk,檔案內容如下:10#/Windows/MyApp.exeMyApp.lnk檔案也放入E:/目錄下;4. 修改MyWinCE工程的project.bib檔案,在FILES 添加如下內容:MyApp.lnk E:/MyApp.lnk  NK  H 5. 修改MyWinCE工程的project.dat檔案,添加如下內容: Directory("/Windows/Startup"):-File("MyApp.lnk","/Windows/MyApp.lnk") 8. Platform Builder IDE:【Build】->【Make Image】(記得千萬不要Build或者Rebuild)9. 成功後,得到的NK.bin(或NK.nb0)就包含了應用程式MyApp.exe和MyApp.lnk,當把相應的核心燒入開發板MyApp程式就會在系統啟動時自動運行。   關於系統程式的啟動順序(自啟動方法二)採用這種方法的前提是你要啟動的應用程式已經編譯進了NK.nb0或者NK.bin中了。具體方法及說明如下:platform.reg或者common.reg,在[HKEY_LOCAL_MACHINE/init]段添加如下類似內容:    
  "LaunchXX"="<你的程式>"   "DependXX"=hex:YY,ZZ,... 其中XX是十進位的數字,表示<你的程式>的啟動順序標識;YY,ZZ是Least   Significant的十六進位數字,表示<你的程式>所依賴(先於<你的程式>運行)的程式的啟動順序標識。來看兩個系統的例子:[HKEY_LOCAL_MACHINE/init]; @CESYSGEN IF CE_MODULES_SHELL        "Launch10"="shell.exe"; @CESYSGEN ENDIFIF IMGTINY !; @CESYSGEN IF CE_MODULES_DEVICE        "Launch20"="device.exe"; @CESYSGEN ENDIF; @CESYSGEN IF CE_MODULES_GWESIF NOGUI !        "Launch30"="gwes.exe"        "Depend30"=hex:14,00ENDIFLaunch10、Launch20、Launch30表示了系統在啟動時會先載入“shell.exe”,然後再載入“device.exe”和”gwes.exe”,而且可以看到”gwes.exe”的啟動還有依賴“device.exe”,即只有在“device.exe”完全啟動後“gwes.exe”才能啟動。如果我們要在系統啟動時候也啟動自己的程式可以像如下設定: 例如:  "Launch80"="MyApp.exe"  "Depend80"=hex:1E,00 語意為程式MyApp.exe的啟動順序標識是80,它依賴標識為30(即001E)的程式。 如果<你的程式>不依賴其他程式,那麼不需要添加"DependXX"=hex:YY,zz,...指示; 如果<你的程式>依賴多個程式,那麼在"DependXX"指示中指明;  eg.  "Launch80"="MyApp.exe"  "Depend80"=hex:0A,00,1E,00 語意為MyApp.exe程式的啟動依賴標識為10和30的程式。注意Launch後面的數值不能和系統預設的某個程式的值一樣,不然在編譯的時候就會報錯。修改完後只要 PlatformBuilder   IDE->Build->MakeImage,產生新的NK.bin就可以了,不用重新編譯。 去掉系統啟動 explorer Windows CE.NET的案頭確實漂亮,但是如果我們的嵌入式系統使用微軟的案頭,總讓我感覺不倫不類。因此,要想個辦法,讓我們的程式開機啟動,把微軟的那個案頭給替換掉。其中使用startup的捷徑再加上隱藏工作列的方法,效果非常的好,但是每次啟動的時候,總是微軟的案頭先出來,再啟動我們的程式,感覺還是不爽。有一種方法如下:1) 首先建立工程,把你的應用程式放到核心裡面去(前面介紹了如何做);2) 編譯平台;3) 修改E:/SMDK2440/RelDir/SAMSUNG_SMDK2440_ARMV4IRelease/shell.reg的檔案 :在檔案中有這樣一行:[HKEY_LOCAL_MACHINE/init]"Launch50"="explorer.exe""Depend50"=hex:14,00, 1e,00把這個explorer.exe改成你的應用程式(比如:MyApp.exe)就可以了;4) Platform Builder IDE:【Build】->【Make Image】(記得千萬不要Build或者Rebuild)否則就前功盡棄了。5) 成功後,得到的NK.bin(或NK.nb0)就包含了應用程式MyApp.exe和MyApp.lnk,當把相應的核心燒入開發板MyApp程式就會在系統啟動時自動運行。 至此,隨心所欲的讓自己的程式在Windows CE系統啟動時自動運行了。 原理說明:  1.將自訂的檔案打包進NK.bin中的方法有兩種  一種是編輯project.bib檔案。在FILES   Section描述檔案的名稱,源檔案的路徑,檔案在目標系統中的屬性。在上面,  MyApp.exe   $(_FLATRELEASEDIR)/MyApp.exe   NK   H  表示將你所建工程如:E:/SMDK2440/RelDir/SAMSUNG_SMDK2440_ARMV4IRelease 目錄下的檔案MyApp.exe檔案打包進NK.bin,並且此檔案將處在Kernel記憶體區,檔案屬性類型為隱藏。 第二種方法是添加User   Feature。PlatformBuilder   IDE->FeatureView->在"MyWinCE   Features"上Right   Click滑鼠->Insert   User   Feature->指向想打包的檔案。無論採用哪種打包方法,在啟動的Windows   CE系統中,檔案都在/Windows目錄下。下一步就是根據需要重新組織檔案系統的目錄結構。2.組織檔案系統的目錄結構的途徑在於修改project.dat檔案添加檔案目錄結構的描述。描述的文法如下:root:-Directory("<目錄名>")   表示在root目錄(/)下建立目錄Directory("/<目錄名>"):-Directory("<子目錄名>")   表示在指定目錄下建立子目錄Directory("/("<目錄名>/<子目錄名>"):-File("<檔案名稱>.<副檔名>","/Windows/<檔案名稱>.<副檔名>")   表示在指定目錄下建立/Windows目錄下檔案的拷貝,顯示名稱是<檔案名稱>.<副檔名>。3.應用程式並不一定需要打包進NK.bin  假定程式在硬碟的某個位置,如/硬碟/MyApp/MyApp.exe,那麼只需建立捷徑檔案,連結指向/硬碟/MyApp/MyApp.exe就是了。 整個過程簡單來說就是,想清楚應用程式將會出現在哪個目錄下,建立正確的捷徑檔案,修改目標系統目錄組織配置,最後將應用程式和相應的捷徑檔案打包進NK.bin。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.