Control Panel Applet 实现

这篇文章主要说明下如何生成一个控制面板程序(Control PanelApplet),一般它的后缀是.cpl,但这个没有什么硬性规定,你也可以是.exe、.dll等。

下面我是实现的CPL的效果图:

如果实现了一个CPL,那么我们的程序就可以被ContrlPanel加载进来。这里我讨论DLL的实现,EXE的实现应该差不多。
 

    用DLL实现的话,最核心的就是要导出一个函数,CPLApplet函数,它的原型如下:

   LONG CPlApplet(     
       HWNDhwndCPl,
       UINTuMsg,
       LPARAMlParam1,
       LPARAMlParam2
      );


      这个函数里面,我们一般需要处理的消息报有如下几种:

    CPL_INIT:
      当用户打开控制面板时,就会发送这个消息。当其他调用这个cpl Application的程序加载这个dll的时候会发给CplApplet函数这个消息。做一些初始化工作,如果成功返回0,否则返回非零。

      CPL_GETCOUNT:
      这个消息是得到这个dll中控制面板程序的数量。返回具体的数量,通常为1。

      CPL_NEWINQUIRE:
      基本上很多事情都在这个消息里进行,这里主要是处理一些有关控制面板程序的一些信息。如加载他的图标,名称等等。
      LPNEWCPLINFO这个结构体就是存放一些控制面板的信息。(当然这里用到对应的资源都是定义在资源文件里,也可以不用放到资源中,但一般都是放到程序资源文件中,统一管理)。

      CPL_DBLCLK:
      这个消息是当用户选择一个控制面板选项的时候会触发,在这个消息里我们可以做打开一个新的程序或者读注册表之类事情。

      CPL_STOP:
这个消息是关闭控制面板程序。

      CPL_EXIT:
      这个消息是在释放dll之前,发送给dll 中CplApplet 的消息。


一些关键点:

      1)包含头文件cpl.h。
      2)定义资源,字符串,图标等。
      3)如何让控制面板能加载CPL。
      当DLL输出名改为.cpl。
      一种方法是把.cpl放到system32目录下面,控制面板一起来就会去加载system32目录下面的.cpl。
      另一种方法就是把这个.cpl写到注册表中,路径如下:
      Software\Microsoft\Windows\CurrentVersion\Control Panel\Cpls如果你想让所有的用户都能用,就注册表HKEY_LOCAL_MACHINE下面,如果只是想当前用户可用,就注册表HKEY_CURRENT_USER。
4)添加一个.def文件,导出CPLApplet函数:
      LIBRARY  "YouCPLName"
      EXPORTSCPlApplet PRIVATE

总结:

      我这里只是简单地说明了一下实现一个CPL的基本方法,最基本的是还是处理消息,这种模式我觉得挺好,像是服务器与客户端的这种通信模式一样,当然一个CPL还有复杂的界面与功能,如打开就直接嵌到控制面板中,分类等,这些都发球CPL的扩展方法,其实最根本的都在写注册表。

      大家可以参考MSDN上面详细的说明:
      ms-help://MS.MSDNQTR.v90.chs/shellcc/platform/shell/programmersguide/controlpanel/control_panel_items.htm


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值