透析WINCE的控制面板
生活随笔
收集整理的這篇文章主要介紹了
透析WINCE的控制面板
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
WindowsCE是微軟公司嵌入式、移動計算平臺的基礎,它是一個開放的、可升級的32位嵌入式操作系統,是基于掌上型電腦類的電子設備操作系統,它是精簡的Windows 95,Windows CE的圖形用戶界面相當出色。Windows CE作業系統是Windows家族中最新的成員,專門設計給掌上型電腦(HPCs)所使用的電腦環境。這樣的作業系統可使完整的可攜式技術與現有的Windows桌面技術整合工作。 Windows CE 被設計成針對小型設備(它是典型的擁有有限內存的無磁盤系統)的通用操作系統,Windows CE 可以通過設計一層位于內核和硬件之間代碼來用設定硬件平臺,這即是眾所周知的硬件抽象層(HAL)(在以前解釋時,這被稱為 OEMC (原始設備制造)適應層,即 OAL; 內核壓縮層,即 KAL. 以免與微軟的 Windows NT 操作系統 HAL 混淆) .
1.控制面板的結構 ? 控制面板(control panel)是Windows圖形用戶界面一部分,可通過開始菜單訪問。它允許用戶查看并操作基本的系統設置和控制,比如添加硬件,添加/刪除軟件,控制用戶帳戶,更改輔助功能選項,等等。控制面板可通過Windows 95,Windows 98和Windows Me中的"開始">"設置">"控制面板"訪問,或者Windows XP和Windows Vista中的開始菜單直接訪問。同時它也可以通過運行命令"control"命令直接訪問。 控制面板其實也是個動態鏈接庫,區別只在于后綴名為。cpl,以及對外接口為CPlApplet()。 接口的原型為: LONG CALLBACK CPlApplet(HWND hwndCPL,UINT message, LPARAM lParam1, LPARAM lParam2) 在接口函數中我們需要實現特定幾個消息的響應,控制面板才能正常運作。為方便觀察,在這里直接貼出消息的響應結構: // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= // The entry point to the Control Panel application. // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= extern "C" LONG CALLBACK CPlApplet(HWND hwndCPL,UINT message, LPARAM lParam1, LPARAM lParam2) { switch (message) { case CPL_INIT: // Perform global initializations, especially memory // allocations, here. // Return 1 for success or 0 for failure. // Control Panel does not load if failure is returned. return 1; case CPL_GETCOUNT: // The number of actions supported by this Control // Panel application. return 1; case CPL_NEWINQUIRE: { // This message is sent once for each dialog box, as // determined by the value returned from CPL_GETCOUNT. // lParam1 is the 0-based index of the dialog box. // lParam2 is a pointer to the NEWCPLINFO structure. return 0; //means CPLApplet succeed return 1; // Nonzero value means CPlApplet failed. } case CPL_DBLCLK: { // The user has double-clicked the icon for the // dialog box in lParam1 (zero-based)。 return 0; // CPlApplet succeed. return 1; // CPlApplet failed. } case CPL_STOP: // Called once for each dialog box. Used for cleanup. case CPL_EXIT: // Called only once for the application. Used for cleanup. default: return 0; } return 1; // CPlApplet failed. } // CPlApplet 這幾個消息的作用分別是: CPL_INIT:初始化,可以在這分配內存等等。 CPL_GETCOUNT:返回控制面板程序的個數。因為一個。cpl文件中,可能包含多個Applets. CPL_NEWINQUIRE:返回包含程序名和圖標信息的NEWCPLINFO結構 CPL_DBLCLK:雙擊時響應 CPL_STOP:單個組件退出時響應,用來清除資源內存等 CPL_EXIT:退出整個cpl程序時響應 這些消息的定義可以在cpl.h中找到 2.在explorer中使用 如果定制的系統中帶有explorer UI,只要把編譯好的文件放進"\windows",然后再打開"控制面板"就可以看到。 3.如何調用。cpl 就像PC機中。dll文件不能直接運行,需要借助rundll32.exe來運行一樣,WinCE下的。cpl也需要相應的程序來調用,這個程序就是:"ctlpnl.exe". 比如我們需要調用系統自帶的cplmain.cpl的"電源管理",只要在開始菜單的運行中輸入:"ctlpnl.exe \windows\cplmain.cpl,5".在路徑后面緊跟的"5"只是因為"電源管理"在cplmain.cpl中輸入第五個Applet而已。 由此我們不難得出在程序中運用ShellExecuteEx()函數調用控制面板的Applet的方法。以下這段代碼,效果和在命令行中輸入命令一樣,也是調用"電源管理". SHELLEXECUTEINFO info; TCHAR szControlPanelCmdLine[ 200 ]; swprintf( szControlPanelCmdLine, L"\\windows\\cplmain.cpl,5"); info.cbSize = sizeof( info ); info.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI; info.lpVerb = NULL; info.lpFile = TEXT("ctlpnl.exe"); info.lpParameters = szControlPanelCmdLine; info.lpDirectory = NULL; info.nShow = SW_SHOW; info.hInstApp = NULL; ShellExecuteEx( &info ); 如果想調用cplmain.cpl的其它Applet,只要把數字改為相對應的即可。 以下所列的第一項序號為0,接下的為1,其后的繼續遞增。 0 CPL_Comm 1 CPL_Dialing 2 CPL_Keyboard 3 CPL_Password 4 CPL_Owner 5 CPL_Power 6 CPL_System 7 CPL_Screen 8 CPL_Mouse 9 CPL_Stylus 10 CPL_Sounds 11 CPL_SIP" 12 CPL_Remove 13 CPL_DateTime 14 CPL_Certs 15 CPL_Accessib 4.系統自帶控制面板的代碼 微軟對控制面板的代碼是完全公開的,如果安裝的是PB4.2,代碼可以在"\PUBLIC\WCESHELLFE\OAK\CTLPNL"中找到。 CTLPNL文件夾中有九個文件夾,分別對應不同的CPL文件: ADVBACKLIGHT:高級背光燈管理 BTHPNL:藍牙 CONNPNL:撥號網絡 CONTROL:主控制臺,我們在explorer中看到的"控制面板"應該就是這個 CPLMAIN:會生成cplmain.cpl,控制面板的大多數選項均源自于此 CTLPNL:和CONTROL相關聯的 DMPNL:沒使用過,不太清楚。不過查看rc文件應該是設置上網的。 INTL2:區域和語言設置 STGUI:存儲器管理 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的透析WINCE的控制面板的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对Multi-bin 技术的理解
- 下一篇: 50辆宾利堵车位后续来了:官方通报“国企