WinCE中如何调用控制面板程序?

本文介绍了在WinCE系统中如何调用控制面板程序的方法,包括通过ctlpnl.exe调用.cpl文件的具体步骤和参数设置,适用于希望将特定控制面板功能集成到应用中的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章出处来自:http://armlinux.uueasy.com/read.php?tid=120#

 

                  WinCE中如何调用控制面板程序?

客户要求把触摸屏校准程序放到我的应用程序中,其实控制面板中有一个笔针程序就是干这个用的,但他们就是不想看到应用程序以外的窗口。没办法,客户的要求就是命令。我当然不想自己再写一个功能一样的程序,最好的办法是直接调用控制面板中的那个程序。
要是在Linux里,简单,直接system("/path/filename arg……")就好了,但请注意,这是在winCE中,就比较郁了。
首先要找一个类似system这样的函数(winCE里不支持system()),找到了一个——
CreateProcess(
LPCWSTR lpszImageName ,
LPCWSTR lpszCmdLine ,
LPSECURITY_ATTRIBUTES lpsaProcess ,
LPSECURITY_ATTRIBUTES lpsaThread ,
BOOL fInheritHandles ,
DWORD fdwCreate ,
LPVOID lpvEnvironment ,
LPWSTR lpszCurDir ,
LPSTARTUPINFOW lpsiStartInfo ,
LPPROCESS_INFORMATION lppiProcInfo );
瞧这阵势估计就没几个人喜欢,你要读读MSDN才行。
关键是后面还有障碍:不知道“笔针”程序对应的文件名和目录!你以为查看URL可以解决?WinCE的控制面板没有URL,右键也不提供“属性”,这个系统又不是我做的,搜了一圈也没有,估计是被隐藏了,死活想不出查看路径的办法。只好上网搜一下,于是查找到以下有用信息:
WinCE系统中的控制面板和Windows系统中的控制面板原理是一样的,里面就是包含了一些应用程序。WinCE系统的控制面板由 Ctlpnl.exe,Control.exe和一些.cpl文件组成,其中Ctlpnl.exe和Control.exe用于控制控制面板的文件夹显示和架构,而.cpl文件和控制面板中的实际应用程序相对应。from http://ieoqmdce.blog.163.com/blog/static/389399542009913117425/
用脚本实现对WINCE控制面板功能的直接调用
控制面板其实也是个动态链接库,区别只在于后缀名为.cpl
如何调用.cpl
就像PC机中.dll文件不能直接运行,需要借助rundll32.exe来运行一样,WinCE下的.cpl也需要相应的程序来调用,这个程序就是:"ctlpnl.exe".
比如我们需要调用系统自带的cplmain.cpl的"电源管理",只要在开始菜单的运行中输入:"ctlpnl.exe /windows/cplmain.cpl,5".在路径后面紧跟的"5"只是因为"电源管理"在cplmain.cpl中输入第五个Applet而已.
在WINCE实际使用过程中可以使用脚本来做到一机多图中,如脚本RunWait("/Windows/ctlpnl.exe", "cplmain.cpl,6,1")就可直接调用控制面板并进入调整内存
RunWait("/Windows/ctlpnl.exe", "cplmain.cpl,9,1") /可以直接进入校准 (
RunWait("/Windows/ctlpnl.exe", "cplmain.cpl,10")进入调整音量 " ;
以下所列就是不同数字对应的功能
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              证书
from http://bbs.manbu.cc/viewthread.php?tid=27484
于是在“运行”里试了一下ctlpnl.exe /windows/cplmain.cpl,5,果然可以!那办法就有了,只要在程序中需要的地方加入:
 PROCESS_INFORMATION pi = {0};
 CreateProcess(_T("//Windows//ctlpnl.exe"), _T(" cplmain.cpl,9,2"), NULL, NULL, NULL,
     0, NULL, NULL, NULL, &pi);
问题就解决了
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值