`
dato0123
  • 浏览: 970617 次
文章分类
社区版块
存档分类
最新评论

WinCE 控制面板的创建

 
阅读更多

//=====================================================================================================
//AUTHOR:
//norains
//DATE:
//Saturday 25-Feb-2006
//=====================================================================================================
控制面板的组件,其实就是一个地地道道的DLL文件,所不同的是其后缀名为.CPL而已.控制面板组件对外必须要实现一个CPlApplet接口,其原型为:LONG CALLBACK CPlApplet(HWND hwndCPL,UINT message, LPARAM lParam1, LPARAM lParam2).而在此函数之中,为了使组件正常运作,我们必须要处理如下消息:CPL_INIT(初始化,可以在这分配内存等等),CPL_GETCOUNT(显示的组件数目),CPL_NEWINQUIRE(获取组件的信息,才能正常显示),CPL_DBLCLK(双击图标时执行).
为方便观看,将此函数体列出:

// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// 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文件内部进行操作;但我们完全可以把.CPL文件当成一个外壳,其作用只是在"控制面板"中显示一个图标,真正的处理是调用另外一个EXE文件.这样的好处是,此.CPL代码通用性强,如果想再添加别的组件,只要更改.CPL少量代码;并且,功能模块的分离,使得我们如果要更改相关功能,也只要修改相应的EXE文件,调试也更加方便.

现在就让我们看一下如何在控制面板中调用EXE文件.
我们需要的是,在控制面板中双击我们显示的图标就调用我们相应的EXE程序;很显然,我们只需要在CPL_DBLCLK消息中添加调用代码即可.
extern "C" LONG CALLBACK CPlApplet(HWND hwndCPL,UINT message, LPARAM lParam1, LPARAM lParam2)
{
switch (message)

....

case CPL_DBLCLK:
{
//-----------------------------------------------------------------
//关于FindWindow函数的说明:
//原型:HWND FindWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName);
//lpClassName:要赋的值是类的字符串名称,在ce下可以运行Remote Spy++进行查看;在本例子中采用此工具看到的是"Dialog".
//此参数也可以为NULL,前提是所有在运行的窗口标题不同
//lpWindowName:窗口的标题字符串名称,也即是我们可以看到的窗口标题
//------------------------------------------------------------------
//由于我们的这个exe文件只有一个窗口,下面这个函数也可以这样写FindWindow (NULL,TEXT("背光调节"))
HWND hWnd = FindWindow (L"Dialog",TEXT("背光调节"));
if (hWnd)
{
//如果已经运行过一个实例,则把它提到窗口前
SetForegroundWindow (hWnd);
CloseHandle(hWnd);
return 0;
}
else
{
//调用exe文件.
if (CreateProcess(_T("//Windows//Backlight.exe"), NULL, NULL,NULL, FALSE, 0, NULL, NULL, NULL, &pi))
{
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
return 0;
}
}
return 1; // CPlApplet failed.
}

....

}

分享到:
评论

相关推荐

    C# WINCE 控制面板

    在Windows CE(简称WinCE)平台上,开发C#应用程序并集成控制面板功能是常见的需求,尤其是在嵌入式设备中。Windows CE是一个操作系统,为小型设备提供了丰富的功能支持。本项目聚焦于使用C#来调用WinCE的内置控制...

    wince5.0控制面板源码

    7. **安装和部署**:了解控制面板如何被编译、打包和安装到WinCE系统中,可以帮助我们自定义安装过程,或者创建特定环境的版本。 通过分析和修改这些源码,开发者可以实现以下目标: - **优化性能**:对源码进行...

    wince5.0_control_source.rar_控制面板

    通过分析和研究这些源代码,开发者不仅可以了解WinCE5.0控制面板的工作流程,还能学习到如何创建自定义的控制面板项,这对于定制化嵌入式系统或设备管理软件具有极大的价值。同时,这也为调试和优化控制面板的性能...

    wince 6.0 CPLMAIN控制面板编译自动编译链接中英文资源样例代码

    在Windows CE 6.0(简称WinCE 6.0)操作系统中,CPLMAIN是控制面板组件的主要入口点,用于开发自定义的系统设置控制面板。本项目提供了一个关于如何编译和链接中英文资源的样例代码,旨在帮助开发者理解和实践在...

    WinCE工具.rar

    - 控制面板:提供系统设置的集中入口,如屏幕亮度、声音等。 - 更新工具:检查并安装系统或应用更新,保持设备软件最新。 - 系统恢复:创建和应用系统备份,以防万一需要恢复到已知良好状态。 - 安全工具:可能...

    WinCe模拟器2.0版

    8. **用户界面改进**:模拟器的用户界面可能进行了优化,以提供更直观的操作体验,例如增强的图形渲染,更清晰的设备状态显示,以及更方便的设备控制面板。 9. **文档和支持**:伴随WinCE模拟器2.0版的发布,微软...

    基于WinCE的可编程智能控制对象的设计与实现

    3. 用户界面:WinCE支持图形用户界面(GUI)开发,可以创建直观的控制面板,使用户能够方便地配置和监控控制对象。 四、实现过程 1. 硬件驱动开发:为WinCE平台的特定硬件设备编写驱动程序,使其能够在WinCE操作...

    WinCE6.0 制作中文系统

    文中提及了一个问题,即控制面板中的“区域与语言设置”出现错误,具体表现为CTLPNL.EXE应用程序崩溃。这可能是由于变量未初始化导致的。虽然确切的解决方案未在文中给出,但在遇到此类问题时,可以尝试以下方法: ...

    wince gprs拨号上网配置

    - 在控制面板中打开“正在拨号”设置。 - 选择“住宅或单位”,国家代码和区号可以不填。 - 选择编辑,并将所有设置更改为G。 2. **创建新的拨号连接**: - 打开控制面板中的“网络和拨号连接”。 - 选择创建...

    wince下软键盘的调用方法

    在探讨如何在Windows CE(简称Wince)环境下通过C#应用程序调用系统软键盘并控制InputPanel的显示与隐藏之前,我们首先需要了解几个关键概念和技术背景。 ### Windows CE环境 Windows CE是Microsoft开发的一款针对...

    wince+gprs拨号上网总结wince+gprs拨号上网总结

    在控制面板的“网络和拨号连接”选项中选择“新建连接”,并创建一个拨号连接。在配置端口设置时,可以设置波特率为19200或9600,流控制选择无。 3. **拨号选项**: 在拨号选项中,添加命令`+CGDCONT=1,"IP",...

    wince下设置FTP用户信息

    使用“控制面板”中的用户管理工具,为每个FTP用户创建新的用户账户,并设置强壮的密码。 4. **设定用户目录**:每个FTP用户的根目录应根据其访问权限进行设定。这可以通过IIS管理工具完成,将用户账户与特定的磁盘...

    嵌入式WinCE应用流程详细介绍

    在模拟器中,通过控制面板设置直接连接,并在ActiveSync中设定连接参数。完成这些步骤后,模拟器就能与开发环境通信,从而实现程序的下载和调试。 在调试过程中,可以通过设置断点,使用F5进行单步调试,观察程序在...

    wince6.0 触摸屏touch 和ADC驱动

    在Windows CE 6.0(简称WinCE6.0)操作系统中,开发和集成触摸屏(Touch)以及模拟数字转换器(ADC)驱动是至关重要的任务,尤其在嵌入式设备和工业控制系统中。本项目着重讲解如何在WinCE6.0上实现这两种驱动,并...

    罗技usb摄像头WINCE驱动源程序

    5. 用户界面设计:创建简单的控制面板,让用户可以调整摄像头参数。 6. 测试方法学:设计和执行驱动程序的验证测试,确保稳定性和兼容性。 通过这些知识点的学习和应用,开发者能够为罗技USB摄像头在WINCE系统上...

    WinCE 概述,入门学习好材料

    1. 工业自动化:WinCE因其稳定性和实时性,常用于制造设备的控制面板。 2. 智能家居:智能家电、安防设备等嵌入WinCE实现远程监控和控制。 3. 汽车电子:车载信息娱乐系统、导航设备等利用WinCE提供用户界面和服务。...

    labview for wince

    在IT行业,尤其是嵌入式系统与自动化控制领域,LabVIEW作为一种图形化编程环境,被广泛应用于数据采集、仪器控制和自动化测试系统的设计。当涉及到为Windows CE(Wince)操作系统设备开发应用程序时,LabVIEW提供了...

    清华大学_同济大学WINCE实验教程

    使用Visual Studio等工具,读者可以学习如何创建基于WINCE的桌面应用、服务和控制面板组件。此外,还会涉及WINCE特有的API和控件,以实现高效且用户友好的界面。 5. **调试与优化**:在实验过程中,调试技巧和性能...

    WINCE600-public-CTLPNL.zip

    标题中的"WINCE600-public-CTLPNL.zip"可能是一个包含公开可用的WinCE 6.0证书和控制面板(Control Panel)组件的压缩包。这个包中的"certcpl.cpp"文件,是实现证书管理控制面板小程序(CPL)的核心代码。 首先,让...

    嵌入式WINCE实验指导.pdf

    - **“我的设备”管理**:了解“我的设备”中的各文件夹功能,包括FlashDisk文件夹、Windows文件夹和控制面板等。 - **文件管理**:介绍FlashDisk文件夹的重要性和如何避免误删系统文件。 ### 开发平台构建与应用...

Global site tag (gtag.js) - Google Analytics