﻿{"id":181,"date":"2010-05-25T12:11:20","date_gmt":"2010-05-25T04:11:20","guid":{"rendered":"http:\/\/nick.workao.org\/?p=181"},"modified":"2021-11-17T11:27:03","modified_gmt":"2021-11-17T03:27:03","slug":"%e8%af%a6%e8%a7%a3wince%e7%9a%84%e6%8e%a7%e5%88%b6%e9%9d%a2%e6%9d%bf%e8%bd%ac","status":"publish","type":"post","link":"https:\/\/nick.txtcc.com\/index.php\/scm\/181","title":{"rendered":"\u8be6\u89e3WINCE\u7684\u63a7\u5236\u9762\u677f(\u8f6c)"},"content":{"rendered":"<div>\n\n\/\/========================================================================\n\/\/TITLE:\n\/\/\u00a0\u00a0\u00a0 \u8be6\u89e3WINCE\u7684\u63a7\u5236\u9762\u677f\n\/\/AUTHOR:\n\/\/\u00a0\u00a0\u00a0 norains\n\/\/DATE:\n\/\/\u00a0\u00a0\u00a0 Tuesday\u00a0 29-August-2006\n\/\/========================================================================\n\u66fe\u7ecf\u5728\u6211\u7684\u4e00\u7bc7\u300a\u63a7\u5236\u9762\u677f\u7684\u521b\u5efa\u300b\u4e2d\u4ecb\u7ecd\u8fc7WinCE\u63a7\u5236\u9762\u677f\u7684\u7ed3\u6784,\u4e0d\u8fc7\u7531\u4e8e\u90a3\u7bc7\u6587\u7ae0\u5176\u76ee\u7684\u53ea\u5728\u4e8e\u63a7\u5236\u9762\u677f\u5982\u4f55\u8c03\u7528EXE\u7a0b\u5e8f,\u6545\u5bf9\u63a7\u5236\u9762\u677f\u4e5f\u4ec5\u662f\u6cdb\u6cdb \u800c\u8c08.\u4e0d\u8fc7\u5728\u8fd9\u7bc7\u6587\u7ae0\u4e2d,\u6211\u4eec\u5c06\u5bf9WinCE\u7684\u4f7f\u7528\u65b9\u6cd5\u6765\u4e2a\u6574\u4f53\u7684\u8be6\u89e3.\n1.\u63a7\u5236\u9762\u677f\u7684\u7ed3\u6784\n\u63a7\u5236\u9762\u677f\u5176\u5b9e\u4e5f\u662f\u4e2a\u52a8\u6001\u94fe\u63a5\u5e93,\u533a\u522b\u53ea\u5728\u4e8e\u540e\u7f00\u540d\u4e3a.cpl,\u4ee5\u53ca\u5bf9\u5916\u63a5\u53e3\u4e3aCPlApplet().\n\u63a5\u53e3\u7684\u539f\u578b\u4e3a:\nLONG CALLBACK CPlApplet(HWND hwndCPL,UINT message, LPARAM  lParam1, LPARAM lParam2)\n\u5728\u63a5\u53e3\u51fd\u6570\u4e2d\u6211\u4eec\u9700\u8981\u5b9e\u73b0\u7279\u5b9a\u51e0\u4e2a\u6d88\u606f\u7684\u54cd\u5e94,\u63a7\u5236\u9762\u677f\u624d\u80fd\u6b63\u5e38\u8fd0\u4f5c.\u4e3a\u65b9\u4fbf\u89c2\u5bdf,\u5728\u8fd9\u91cc\u76f4\u63a5\u8d34\u51fa\u6d88\u606f\u7684\u54cd\u5e94\u7ed3\u6784:\n<div>\n<pre>\/\/ =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\/\/ The entry point to the Control Panel application.\n\/\/ =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\nextern \"C\"  LONG CALLBACK CPlApplet(HWND hwndCPL,UINT message, LPARAM lParam1, LPARAM lParam2)\n{\n  switch (message)\n  {\n    case CPL_INIT:\n          \/\/ Perform global initializations, especially memory\n          \/\/ allocations, here.\n          \/\/ Return 1 for success or 0 for failure.\n          \/\/ Control Panel does not load if failure is returned.\n          return 1;\n    case CPL_GETCOUNT:\n          \/\/ The number of actions supported by this Control\n          \/\/ Panel application.\n          return 1;\n    case CPL_NEWINQUIRE:\n        {\n              \/\/ This message is sent once for each dialog box, as\n              \/\/ determined by the value returned from CPL_GETCOUNT.\n              \/\/ lParam1 is the 0-based index of the dialog box.\n              \/\/ lParam2 is a pointer to the NEWCPLINFO structure.\n                return 0; \/\/means CPLApplet succeed\n                return 1;  \/\/ Nonzero value means CPlApplet failed.\n            }\n    case CPL_DBLCLK:\n            {\n              \/\/ The user has double-clicked the icon for the\n              \/\/ dialog box in lParam1 (zero-based).\n                return 0;     \/\/ CPlApplet succeed.\n                return 1;     \/\/ CPlApplet failed.\n            }\n    case CPL_STOP:\n                \/\/ Called once for each dialog box. Used for cleanup.\n    case CPL_EXIT:\n                \/\/ Called only once for the application. Used for cleanup.\n    default:\n          return 0;\n  }\n  return 1;  \/\/ CPlApplet failed.\n}  \/\/ CPlApplet<\/pre>\n<\/div>\n<!-- .codearea{ color:black;  background-color:white;  line-height:18px;  border:1px solid #4f81bd;  margin:0;  width:auto !important;  width:100%;  overflow:auto;  text-align:left;  font-size:12px;  font-family: \"Courier New\",\"Consolas\",\"Fixedsys\",\"BitStream Vera Sans Mono\", courier,monospace,serif} .codearea pre{ color:black; line-height:18px;  padding:0 0 0 12px !important; margin:0em;  background-color:#fff !important} .linewrap pre{white-space:pre-wrap;  white-space:-moz-pre-wrap;  white-space:-pre-wrap;  white-space:-o-pre-wrap;  word-wrap:break-word;  word-break:normal} .codearea pre.alt{ background-color:#f7f7ff !important} .codearea .lnum{color:#4f81bd;line-height:18px} -->\u8fd9\u51e0\u4e2a\u6d88\u606f\u7684\u4f5c\u7528\u5206\u522b\u662f:\nCPL_INIT:\u521d\u59cb\u5316,\u53ef\u4ee5\u5728\u8fd9\u5206\u914d\u5185\u5b58\u7b49\u7b49.\nCPL_GETCOUNT:\u8fd4\u56de\u63a7\u5236\u9762\u677f\u7a0b\u5e8f\u7684\u4e2a\u6570.\u56e0\u4e3a\u4e00\u4e2a.cpl\u6587\u4ef6\u4e2d,\u53ef\u80fd\u5305\u542b\u591a\u4e2aApplets.\nCPL_NEWINQUIRE:\u8fd4\u56de\u5305\u542b\u7a0b\u5e8f\u540d\u548c\u56fe\u6807\u4fe1\u606f\u7684NEWCPLINFO\u7ed3\u6784\nCPL_DBLCLK:\u53cc\u51fb\u65f6\u54cd\u5e94\nCPL_STOP:\u5355\u4e2a\u7ec4\u4ef6\u9000\u51fa\u65f6\u54cd\u5e94,\u7528\u6765\u6e05\u9664\u8d44\u6e90\u5185\u5b58\u7b49\nCPL_EXIT:\u9000\u51fa\u6574\u4e2acpl\u7a0b\u5e8f\u65f6\u54cd\u5e94\n\u8fd9\u4e9b\u6d88\u606f\u7684\u5b9a\u4e49\u53ef\u4ee5\u5728cpl.h\u4e2d\u627e\u5230\n2.\u5728explorer\u4e2d\u4f7f\u7528\n\u5982\u679c\u5b9a\u5236\u7684\u7cfb\u7edf\u4e2d\u5e26\u6709explorer UI,\u53ea\u8981\u628a\u7f16\u8bd1\u597d\u7684\u6587\u4ef6\u653e\u8fdb&#8221;windows&#8221;,\u7136\u540e\u518d\u6253\u5f00&#8221;\u63a7\u5236\u9762\u677f&#8221;\u5c31\u53ef\u4ee5\u770b\u5230.\n3.\u5982\u4f55\u8c03\u7528.cpl\n\u5c31\u50cfPC\u673a\u4e2d.dll\u6587\u4ef6\u4e0d\u80fd\u76f4\u63a5\u8fd0\u884c,\u9700\u8981\u501f\u52a9rundll32.exe\u6765\u8fd0\u884c\u4e00\u6837,WinCE\u4e0b\u7684.cpl\u4e5f\u9700\u8981\u76f8\u5e94\u7684\u7a0b\u5e8f\u6765\u8c03\u7528,\u8fd9\u4e2a\u7a0b\u5e8f\u5c31 \u662f:&#8221;ctlpnl.exe&#8221;.\n\u6bd4\u5982\u6211\u4eec\u9700\u8981\u8c03\u7528\u7cfb\u7edf\u81ea\u5e26\u7684cplmain.cpl\u7684&#8221;\u7535\u6e90\u7ba1\u7406&#8221;,\u53ea\u8981\u5728\u5f00\u59cb\u83dc\u5355\u7684\u8fd0\u884c\u4e2d\u8f93\u5165:&#8221;ctlpnl.exe  windowscplmain.cpl,5&#8243;.\u5728\u8def\u5f84\u540e\u9762\u7d27\u8ddf\u7684&#8221;5&#8243;\u53ea\u662f\u56e0\u4e3a&#8221;\u7535\u6e90\u7ba1\u7406&#8221;\u5728cplmain.cpl\u4e2d\u8f93\u5165\u7b2c\u4e94\u4e2aApplet\u800c\u5df2.\n\u7531\u6b64\u6211\u4eec\u4e0d\u96be\u5f97\u51fa\u5728\u7a0b\u5e8f\u4e2d\u8fd0\u7528ShellExecuteEx()\u51fd\u6570\u8c03\u7528\u63a7\u5236\u9762\u677f\u7684Applet\u7684\u65b9\u6cd5.\u4ee5\u4e0b\u8fd9\u6bb5\u4ee3\u7801,\u6548\u679c\u548c\u5728\u547d\u4ee4\u884c\u4e2d\u8f93\u5165\u547d\u4ee4\u4e00\u6837,\u4e5f \u662f\u8c03\u7528&#8221;\u7535\u6e90\u7ba1\u7406&#8221;.\n<div>\n<pre>    SHELLEXECUTEINFO info;    \n    TCHAR szControlPanelCmdLine[ 200 ];\n    swprintf( szControlPanelCmdLine, L\"\\windows\\cplmain.cpl,5\");\n    info.cbSize = sizeof( info );\n    info.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI;\n    info.lpVerb = NULL;\n    info.lpFile = TEXT(\"ctlpnl.exe\");\n    info.lpParameters = szControlPanelCmdLine;\n    info.lpDirectory = NULL;\n    info.nShow = SW_SHOW;\n    info.hInstApp = NULL;\n    ShellExecuteEx( &info );<\/pre>\n<\/div>\n<!-- .codearea{ color:black;  background-color:white;  line-height:18px;  border:1px solid #4f81bd;  margin:0;  width:auto !important;  width:100%;  overflow:auto;  text-align:left;  font-size:12px;  font-family: \"Courier New\",\"Consolas\",\"Fixedsys\",\"BitStream Vera Sans Mono\", courier,monospace,serif} .codearea pre{ color:black; line-height:18px;  padding:0 0 0 12px !important; margin:0em;  background-color:#fff !important} .linewrap pre{white-space:pre-wrap;  white-space:-moz-pre-wrap;  white-space:-pre-wrap;  white-space:-o-pre-wrap;  word-wrap:break-word;  word-break:normal} .codearea pre.alt{ background-color:#f7f7ff !important} .codearea .lnum{color:#4f81bd;line-height:18px} -->\u5982\u679c\u60f3\u8c03\u7528cplmain.cpl\u7684\u5176\u5b83Applet,\u53ea\u8981\u628a\u6570\u5b57\u6539\u4e3a\u76f8\u5bf9\u5e94\u7684\u5373\u53ef.\n\u4ee5\u4e0b\u6240\u5217\u7684\u7b2c\u4e00\u9879\u5e8f\u53f7\u4e3a0,\u63a5\u4e0b\u7684\u4e3a1,\u5176\u540e\u7684\u7ee7\u7eed\u9012\u589e.\n0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CPL_Comm\n1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CPL_Dialing\n2\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CPL_Keyboard\n3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CPL_Password\n4\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CPL_Owner\n5\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CPL_Power\n6\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CPL_System\n7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CPL_Screen\n8\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CPL_Mouse\n9\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CPL_Stylus\n10\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CPL_Sounds\n11\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CPL_SIP\n12\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CPL_Remove\n13\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CPL_DateTime\n14\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CPL_Certs\n15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CPL_Accessib\n4.\u7cfb\u7edf\u81ea\u5e26\u63a7\u5236\u9762\u677f\u7684\u4ee3\u7801\n\u5fae\u8f6f\u5bf9\u63a7\u5236\u9762\u677f\u7684\u4ee3\u7801\u662f\u5b8c\u5168\u516c\u5f00\u7684,\u5982\u679c\u5b89\u88c5\u7684\u662fPB4.2,\u4ee3\u7801\u53ef\u4ee5\u5728&#8221;PUBLICWCESHELLFEOAKCTLPNL&#8221;\u4e2d\u627e\u5230.\nCTLPNL\u6587\u4ef6\u5939\u4e2d\u6709\u4e5d\u4e2a\u6587\u4ef6\u5939,\u5206\u522b\u5bf9\u5e94\u4e0d\u540c\u7684CPL\u6587\u4ef6:\nADVBACKLIGHT:\u9ad8\u7ea7\u80cc\u5149\u706f\u7ba1\u7406\nBTHPNL:\u84dd\u7259\nCONNPNL:\u62e8\u53f7\u7f51\u7edc\nCONTROL:\u4e3b\u63a7\u5236\u53f0,\u6211\u4eec\u5728explorer\u4e2d\u770b\u5230\u7684&#8221;\u63a7\u5236\u9762\u677f&#8221;\u5e94\u8be5\u5c31\u662f\u8fd9\u4e2a\nCPLMAIN:\u4f1a\u751f\u6210cplmain.cpl,\u63a7\u5236\u9762\u677f\u7684\u5927\u591a\u6570\u9009\u9879\u5747\u6e90\u81ea\u4e8e\u6b64\nCTLPNL:\u548cCONTROL\u76f8\u5173\u8054\u7684\nDMPNL:\u6ca1\u4f7f\u7528\u8fc7,\u4e0d\u592a\u6e05\u695a.\u4e0d\u8fc7\u67e5\u770brc\u6587\u4ef6\u5e94\u8be5\u662f\u8bbe\u7f6e\u4e0a\u7f51\u7684.\nINTL2:\u533a\u57df\u548c\u8bed\u8a00\u8bbe\u7f6e\nSTGUI:\u5b58\u50a8\u5668\u7ba1\u7406\n\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\/\/======================================================================== \/\/TITLE: \/\/\u00a0\u00a0\u00a0 \u8be6\u89e3WINCE\u7684\u63a7\u5236&#46;&#46;&#46;<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[39],"tags":[120,128],"class_list":["post-181","post","type-post","status-publish","format-standard","hentry","category-scm","tag-wince","tag-128"],"_links":{"self":[{"href":"https:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/posts\/181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/comments?post=181"}],"version-history":[{"count":2,"href":"https:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/posts\/181\/revisions"}],"predecessor-version":[{"id":2218,"href":"https:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/posts\/181\/revisions\/2218"}],"wp:attachment":[{"href":"https:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/media?parent=181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/categories?post=181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/tags?post=181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}