精华内容
下载资源
问答
  • Windows控制面板编程

    千次阅读 2008-01-22 11:30:00
    Windows 控制面板编程说明:本文章为本人做项目时查阅相关文章而写成,如有不当之处,请指出。mail: tomcui60000520@163.com关键字:控制面板控制面板应用程序, 一、 什么是控制面板打开Windows控制面板会...

    Windows 控制面板编程

    说明:本文章为本人在做项目时查阅相关文章而写成,如有不当之处,请指出。

    mail: tomcui60000520@163.com

    关键字:

    控制面板,控制面板应用程序,

     

    一、             什么是控制面板

    打开Windows的控制面板会看到类似的图像

    图一

    双击其中的一个图标,会显示对话框,让用户来完成相应的软硬件设置工作。这就是我们看到的控制面板。那么如何开发控制面板程序呢?带着疑问在MSDNgoogle里搜索关键字“Control Panel”,就会找到相关的技术文章。这是我工作的方法:借鉴已有的资源。但实际情况是那样吗?我们可以跟着MSDN的讲述来一步一步深入下去。

    经过挖掘,发现并不是exe文件(Windows Vista下支持exe的控制面板应用程序,并且微软建议做成exe文件),而是有着cpl后缀名的文件,在windows>system32下可以找到这样的文件。如果借助工具,Dependency Walker for Win32 (x86) dumpbin等就可以看到该文件导出了一些函数。

    图二

    多观察几个这样的文件,发现导出的函数虽有差异,但其中都有CPLApplet函数被导出。这些特征与DLL的特征吻合。去MSDN上查阅CPLApplet函数的说明证明我们的猜测是正确的。可以说控制面板应该程序就是以CPL为后缀名并且一定要导出CPLApplet函数的dll文件。

    对于具体的描述可以参考:

    http://msdn2.microsoft.com/en-us/library/bb776838(VS.85).aspx

    二、             明确几个概念

    l  控制面板管理程序:用于管理控制面板的程序,在桌面windows版本是CONTROL.EXE,在windows CE版本是CTLPNL.EXE,它们负责管理控制面板里的控制面板条目。简单的说,我们打开控制面板时,这些管理程序就在运行了。只不过我们看到的是挂上了Shell外观而已(注:这是我的猜测,还没有找到依据)。

    l  控制面板条目(Control Panel Item):在控制面板里看到的每个图标所对应的就是一个控制面板条目。

    l  控制面板应用程序(Control Panel Application):就是最终看到的CPL文件,一个控制面板应用程序可以实现几个控制面板条目。

     

    三、             控制面板应用程序的编写

    编写控制面板应用程序,就是编写dll文件,在该文件中实现控制所需要的功能。这就涉及到一个不得不说的函数,没有它就无法完成控制面板程序的实现。该函数为CPLApplet。下面就该函数的参数等知识做些介绍。

    函数:LONG CPLAppletHWND hwndCPlUINT msg, LPARAM lParam1, LPARAM lParam2

    函数CPLApplet是控制面板应用程序(Control Panel application)的入口点,它被控制面板管理程序(control.exe Ctlpnl.exe)自动调用,它是个回调函数(Callback),注意:CPL文件一定要把函数CPLApplet导出,这样控制面板才能找到程序的入口点。

    当启动控制面板时,它会搜索WindowsSystem32或注册表的相应条目目录下的文件,并把以CPL作为扩展名的文件载入,它调用CPL文件的导出函数CPLApplet(),发送消息给该函数。所以,控制面板应用程序要处理控制面板发送过来的消息,即在函数CPLApplet中进行处理,该函数没有默认的行为。如果一个CPL文件中实现了多个控制面板程序,那么只会有一个CPLApplet函数,它负责所有的控制面板应用程序。

    参数说明:

    hwndCPl:控制面板管理程序或称为控制面板的窗口句柄,即为control.exe的窗口句柄。如果控制面板应用程序或其它窗口需要传递父窗口句柄,可以使用该参数。

    Msg:发送到控制面板应用程序的消息,由控制面板管理程序发送。

    lParam1:消息参数

    lParam2:消息参数

    函数的返回值依据消息的不同而不同。

    应用程序要使用该函数需要包含头文件:cpl.h

     

     

    消息名称

    描述

    CPL_INIT

     控制面板应用程序收到的第一个消息,通常在此处理全局初始化和内存分配。成功返回非0,否则返回0,此时控制面板管理程序终止和该应用程序的通信,并释放相应的CPL文件。

    CPL_GETCOUNT

    该消息紧接在CPL_INIT消息之后被发送,它返回控制面板管理程序所能看到该CPL文件中所包含的控制面板组件的数目,即该CPL文件可以出现在控制面板中的图标的数目。

    CPL_INQUIRE

    CPL_GETCOUNT之后被发送,为指定的控制面板条目提供信息。

    CPL_NEWINQUIRE

    CPL_GETCOUNT之后被发送,与消息CPL_INQUIRE完成的功能类似,只不过其实现要求TNewCPLInfo结构指针,所包含的资源不提供缓存,所以控制面板启动的较慢,一般不建议处理该消息,除非特别必要,如要根据一定的条件动态的改变控制面板条目的图标、字符串等。

    CPL_DBLCLK

    表明用户选定了一个控制面板条目,程序应该显示相应的对话框以便用户完成相应的任务。成功返回0,否则,返回非0.

    CPL_STOP

    控制面板管理程序关闭时被发送,控制面板应用程序在此时处理内存释放等动作。成功处理,返回0.

    CPL_SELECT

    目前不被使用。只有Windows 95 Microsoft Windows NT 4.0之前的系统使用。

    CPL_STARTWPARMS

    该消息与CPL_DBLCLK类似,但lParam2指向LPCTSTR,该消息在shell32.dll version 5.0 Windows 2000 Windows Millennium Edition (Windows Me))及以后版本有效

    CPL_EXIT

    CPL_STOP消息之后被发送,这是控制面板应用程序在释放资源的最后机会。成功处理返回0.

     

    CPL_INQUIRElParam1是以0为起点的整数,它是该CPL文件中所包含的控制面板条目的索引,lParam2参数要求一个CPLINFO结构的指针,用来填充所需的图标、字符串等信息。如果成功处理了该消息,应该返回0

    CPL_NEWINQUIRE:该消息与CPL_INQUIRE都是CPL_GETCOUNT之后被发送的消息,但并没有明确的先后顺序。所以程序里不要依赖它们的顺序来处理不同的事务。

    编写控制面板应用程序的步骤:

    1 选择适当的开发工具(如:Visual Studio 2008),建立DLL项目;

    2 导出函数CPLApplet

    3 在函数CPLApplet的消息处理过程中完成你需要的工作;

    一个简单的例子

    开发工具:Microsoft Visual Studio 2008

    操作系统:Windows XP SP2

    步骤:

    1 新建Win32 Project,工程名为CPLTest

    2 应用程序类型选择DLLCPL文件本质上是DLL);

    3 在项目中新增或导入一个图标文件和两个字符串资源,用于在控制面板管理程序中显示图标和提示;

    Resource Files 上右键选择Add>Resource,然后选择IconString Table

    以下为resource.h 的部分内容

    #define IDI_ICON1                       101 //图标标识

    #define IDS_STRING102                   102 //字符串tom

    #define IDS_STRING103                   103//字符串cui

    4 dllmain.cpp文件中增加函数的导出CPLApplet

    extern "C" __declspec(dllexport) LONG  APIENTRY CPlApplet(HWND hwndCPL, UINT uMsg, LPARAM lParam1, LPARAM lParam2);

    原则上可以按照上面的方式导出就可以了,但是请注意CPlApplet的调用方式是APIENTRY,通过这样方式导出的函数会被改名,通过多次实验也不可行。你可能会上去掉APIENTRY,但这样编出来的CPL文件无法运行,查阅了相关文档,在Windows Mobile Version 5.0 SDK 的文档里指明了该函数的调用方式,windows CE 5.0 Windows Shell and Controls没有指明这种调用方式。所以,只有加上APIENTRY

    现在的问题是如何导出该函数?看来要通过DEF文件了,如果你的项目里没有产生DEF文件,可以通过Project->Properties->Linker->Module Definition File来指定或自己用记事本建立这样的文件,输入如下内容。

    ; CPLTest.def : Declares the module parameters for the DLL.

     

    LIBRARY      "CPLTest"

     

    EXPORTS

        ; Explicit exports can go here

    CPlApplet

    5 dllmain.cpp文件中增加函数CPLApplet的消息处理函数来完成指定的功能;

    dllmain.cpp中包含以上两个头文件

    #include "resource.h" //资源标识

    #include <Cpl.h> //CPLApplet函数要求的头文件

    我的例子完成显示一个MessageBox的功能。

    dllmain.cpp的完整代码:

    // dllmain.cpp : Defines the entry point for the DLL application.

    #include "stdafx.h"

    #include "resource.h"

    #include <Cpl.h>

     

    LONG  APIENTRY CPlApplet(HWND hwndCPL, UINT uMsg, LPARAM lParam1, LPARAM lParam2);

     

    BOOL APIENTRY DllMain( HMODULE hModule,

                           DWORD  ul_reason_for_call,

                           LPVOID lpReserved

                                        )

    {

           switch (ul_reason_for_call)

           {

           case DLL_PROCESS_ATTACH:

           case DLL_THREAD_ATTACH:

           case DLL_THREAD_DETACH:

           case DLL_PROCESS_DETACH:

                  break;

           }

           return TRUE;

    }

     

    LONG APIENTRY  CPlApplet(HWND hwndCPL, UINT uMsg, LPARAM lParam1, LPARAM lParam2)

    {

           int i;

           LPCPLINFO lpCPlInfo;

     

           i = (int) lParam1;

     

           switch (uMsg) {

           case CPL_INIT: // first message, sent once

                  return TRUE;

     

           case CPL_GETCOUNT: // second message, sent once

                  return 1;

                  break;

     

           case CPL_INQUIRE: // third message, sent once per application

                  lpCPlInfo = (LPCPLINFO) lParam2;

                  lpCPlInfo->lData = 0;

                  lpCPlInfo->idIcon = IDI_ICON1;

                  lpCPlInfo->idName = IDS_STRING102;

                  lpCPlInfo->idInfo = IDS_STRING103;

                  break;

     

           case CPL_DBLCLK: // application icon double-clicked

                  MessageBox(NULL, TEXT("Tom66"), TEXT("Cuei666"), MB_OK);

                  break;

     

           case CPL_STOP: // sent once per application before CPL_EXIT

                  break;

     

           case CPL_EXIT: // sent once before FreeLibrary is called

                  break;

     

           default:

                  break;

     

           }

           return 0;

    }

     

    6 编译

    Project->Properties->Linker->Output File修改输出文件的后缀名为CPL,也可以不修改,到最后把dll改为cpl也可以的。

    四、       控制面板应用程序的安装与运行

    l  cpl文件拷贝到WindowsWindows CE)或Windows/system32(桌面版本Windows),可以在这里双击运行,也可以打开控制面板就可以看到该CPL文件所包含的控制面板条目,图标和文件就是你在CPLApplet里指定的,双击也可运行。

    2 在命令行下运行rundll32 shell32.dll,Control_RunDLL CPLTest.cplCPL文件名)@1(数字指定运行第几个控制面板条目,一个CPL文件可以包含几个控制面板条目)。在windows CE下,在命令行输入ctlpnl.exe /windows/cplmain.cpl,5,与桌面版本有些差异。

    3    windows的注册表[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Control Panel/Cpls] 下新建字符串,并指定cpl所在的完整路径,然后就可以在控制面板里看到新增加的控制面板条目。通过写注册表的方式,是一些应用软件惯用的方式,安装时可以通过InstallShield等安装制作工具将其添加到注册表,卸载时,删除注册表中相关的项。

    4  通过拷贝的方式,直接删除相应的CPL文件就可以了。至于有没有更好的方式,我还没有发现。

     

    五、参考资料:

    1 http://msdn2.microsoft.com/en-us/library/aa926276.aspx

    2 http://msdn2.microsoft.com/en-us/library/bb776392.aspx

     

     
    展开全文
  • Windows 10打开Java控制面板

    千次阅读 2020-06-21 14:31:39
    临时要用到Java,但是找到Java控制面板在网上...如果你能在开始找到“控制面板”也行。在Windows 10的“设置”我这边是没找到。打开“控制面板”显示如下: 打开“程序” 打开Java控制面板操作就此完成!!! ...

    临时要用到Java,但是找不到Java控制面板在网上找了一下很多都不实用,其实很简单。
    按“windows+R”打开运行在里面输入“control”打开控制面板;如果你能在开始中找到“控制面板”也行。在Windows 10中的“设置”Windows 10打开Java控制面板我这边是没找到。打开“控制面板”显示如下:
    Windows 10打开Java控制面板
    打开“程序”
    Windows 10打开Java控制面板
    Windows 10打开Java控制面板
    Windows 10打开Java控制面板
    打开Java控制面板操作就此完成!!!

    展开全文
  • ZZ Windows 控制面板编程

    千次阅读 2008-12-12 14:19:00
    ZZ From: http://blog.csdn.net/tomcui/archive/2008/01/22/2058502.aspxWindows 控制面板编程说明:本文章为本人做项目时查阅相关文章而写成,如有不当之处,请指出。mail: tomcui60000520@163.com关键字:控制...

    ZZ From: http://blog.csdn.net/tomcui/archive/2008/01/22/2058502.aspx


    Windows 控制面板编程

    说明:本文章为本人在做项目时查阅相关文章而写成,如有不当之处,请指出。

    mail: tomcui60000520@163.com

    关键字:

    控制面板,控制面板应用程序,

     

    一、             什么是控制面板

    打开Windows的控制面板会看到类似的图像

    图一

    双击其中的一个图标,会显示对话框,让用户来完成相应的软硬件设置工作。这就是我们看到的控制面板。那么如何开发控制面板程序呢?带着疑问在MSDNgoogle里搜索关键字“Control Panel”,就会找到相关的技术文章。这是我工作的方法:借鉴已有的资源。但实际情况是那样吗?我们可以跟着MSDN的讲述来一步一步深入下去。

    经过挖掘,发现并不是exe文件(Windows Vista下支持exe的控制面板应用程序,并且微软建议做成exe文件),而是有着cpl后缀名的文件,在windows>system32下可以找到这样的文件。如果借助工具,Dependency Walker for Win32 (x86) dumpbin等就可以看到该文件导出了一些函数。

    图二

    多观察几个这样的文件,发现导出的函数虽有差异,但其中都有CPLApplet函数被导出。这些特征与DLL的特征吻合。去MSDN上查阅CPLApplet函数的说明证明我们的猜测是正确的。可以说控制面板应该程序就是以CPL为后缀名并且一定要导出CPLApplet函数的dll文件。

    对于具体的描述可以参考:

    http://msdn2.microsoft.com/en-us/library/bb776838(VS.85).aspx

    二、             明确几个概念

    l  控制面板管理程序:用于管理控制面板的程序,在桌面windows版本是CONTROL.EXE,在windows CE版本是CTLPNL.EXE,它们负责管理控制面板里的控制面板条目。简单的说,我们打开控制面板时,这些管理程序就在运行了。只不过我们看到的是挂上了Shell外观而已(注:这是我的猜测,还没有找到依据)。

    l  控制面板条目(Control Panel Item):在控制面板里看到的每个图标所对应的就是一个控制面板条目。

    l  控制面板应用程序(Control Panel Application):就是最终看到的CPL文件,一个控制面板应用程序可以实现几个控制面板条目。

     

    三、             控制面板应用程序的编写

    编写控制面板应用程序,就是编写dll文件,在该文件中实现控制所需要的功能。这就涉及到一个不得不说的函数,没有它就无法完成控制面板程序的实现。该函数为CPLApplet。下面就该函数的参数等知识做些介绍。

    函数:LONG CPLAppletHWND hwndCPlUINT msg, LPARAM lParam1, LPARAM lParam2

    函数CPLApplet是控制面板应用程序(Control Panel application)的入口点,它被控制面板管理程序(control.exe Ctlpnl.exe)自动调用,它是个回调函数(Callback),注意:CPL文件一定要把函数CPLApplet导出,这样控制面板才能找到程序的入口点。

    当启动控制面板时,它会搜索WindowsSystem32或注册表的相应条目目录下的文件,并把以CPL作为扩展名的文件载入,它调用CPL文件的导出函数CPLApplet(),发送消息给该函数。所以,控制面板应用程序要处理控制面板发送过来的消息,即在函数CPLApplet中进行处理,该函数没有默认的行为。如果一个CPL文件中实现了多个控制面板程序,那么只会有一个CPLApplet函数,它负责所有的控制面板应用程序。

    参数说明:

    hwndCPl:控制面板管理程序或称为控制面板的窗口句柄,即为control.exe的窗口句柄。如果控制面板应用程序或其它窗口需要传递父窗口句柄,可以使用该参数。

    Msg:发送到控制面板应用程序的消息,由控制面板管理程序发送。

    lParam1:消息参数

    lParam2:消息参数

    函数的返回值依据消息的不同而不同。

    应用程序要使用该函数需要包含头文件:cpl.h

     

     

    消息名称

    描述

    CPL_INIT

     控制面板应用程序收到的第一个消息,通常在此处理全局初始化和内存分配。成功返回非0,否则返回0,此时控制面板管理程序终止和该应用程序的通信,并释放相应的CPL文件。

    CPL_GETCOUNT

    该消息紧接在CPL_INIT消息之后被发送,它返回控制面板管理程序所能看到该CPL文件中所包含的控制面板组件的数目,即该CPL文件可以出现在控制面板中的图标的数目。

    CPL_INQUIRE

    CPL_GETCOUNT之后被发送,为指定的控制面板条目提供信息。

    CPL_NEWINQUIRE

    CPL_GETCOUNT之后被发送,与消息CPL_INQUIRE完成的功能类似,只不过其实现要求TNewCPLInfo结构指针,所包含的资源不提供缓存,所以控制面板启动的较慢,一般不建议处理该消息,除非特别必要,如要根据一定的条件动态的改变控制面板条目的图标、字符串等。

    CPL_DBLCLK

    表明用户选定了一个控制面板条目,程序应该显示相应的对话框以便用户完成相应的任务。成功返回0,否则,返回非0.

    CPL_STOP

    控制面板管理程序关闭时被发送,控制面板应用程序在此时处理内存释放等动作。成功处理,返回0.

    CPL_SELECT

    目前不被使用。只有Windows 95 Microsoft Windows NT 4.0之前的系统使用。

    CPL_STARTWPARMS

    该消息与CPL_DBLCLK类似,但lParam2指向LPCTSTR,该消息在shell32.dll version 5.0 Windows 2000 Windows Millennium Edition (Windows Me))及以后版本有效

    CPL_EXIT

    CPL_STOP消息之后被发送,这是控制面板应用程序在释放资源的最后机会。成功处理返回0.

     

    CPL_INQUIRElParam1是以0为起点的整数,它是该CPL文件中所包含的控制面板条目的索引,lParam2参数要求一个CPLINFO结构的指针,用来填充所需的图标、字符串等信息。如果成功处理了该消息,应该返回0

    CPL_NEWINQUIRE:该消息与CPL_INQUIRE都是CPL_GETCOUNT之后被发送的消息,但并没有明确的先后顺序。所以程序里不要依赖它们的顺序来处理不同的事务。

    编写控制面板应用程序的步骤:

    1 选择适当的开发工具(如:Visual Studio 2008),建立DLL项目;

    2 导出函数CPLApplet

    3 在函数CPLApplet的消息处理过程中完成你需要的工作;

    一个简单的例子

    开发工具:Microsoft Visual Studio 2008

    操作系统:Windows XP SP2

    步骤:

    1 新建Win32 Project,工程名为CPLTest

    2 应用程序类型选择DLLCPL文件本质上是DLL);

    3 在项目中新增或导入一个图标文件和两个字符串资源,用于在控制面板管理程序中显示图标和提示;

    Resource Files 上右键选择Add>Resource,然后选择IconString Table

    以下为resource.h 的部分内容

    #define IDI_ICON1                       101 //图标标识

    #define IDS_STRING102                   102 //字符串tom

    #define IDS_STRING103                   103//字符串cui

    4 dllmain.cpp文件中增加函数的导出CPLApplet

    extern "C" __declspec(dllexport) LONG  APIENTRY CPlApplet(HWND hwndCPL, UINT uMsg, LPARAM lParam1, LPARAM lParam2);

    原则上可以按照上面的方式导出就可以了,但是请注意CPlApplet的调用方式是APIENTRY,通过这样方式导出的函数会被改名,通过多次实验也不可行。你可能会上去掉APIENTRY,但这样编出来的CPL文件无法运行,查阅了相关文档,在Windows Mobile Version 5.0 SDK 的文档里指明了该函数的调用方式,windows CE 5.0 Windows Shell and Controls没有指明这种调用方式。所以,只有加上APIENTRY

    现在的问题是如何导出该函数?看来要通过DEF文件了,如果你的项目里没有产生DEF文件,可以通过Project->Properties->Linker->Module Definition File来指定或自己用记事本建立这样的文件,输入如下内容。

    ; CPLTest.def : Declares the module parameters for the DLL.

     

    LIBRARY      "CPLTest"

     

    EXPORTS

        ; Explicit exports can go here

    CPlApplet

    5 dllmain.cpp文件中增加函数CPLApplet的消息处理函数来完成指定的功能;

    dllmain.cpp中包含以上两个头文件

    #include "resource.h" //资源标识

    #include <Cpl.h> //CPLApplet函数要求的头文件

    我的例子完成显示一个MessageBox的功能。

    dllmain.cpp的完整代码:

    // dllmain.cpp : Defines the entry point for the DLL application.

    #include "stdafx.h"

    #include "resource.h"

    #include <Cpl.h>

     

    LONG  APIENTRY CPlApplet(HWND hwndCPL, UINT uMsg, LPARAM lParam1, LPARAM lParam2);

     

    BOOL APIENTRY DllMain( HMODULE hModule,

                           DWORD  ul_reason_for_call,

                           LPVOID lpReserved

                                        )

    {

           switch (ul_reason_for_call)

           {

           case DLL_PROCESS_ATTACH:

           case DLL_THREAD_ATTACH:

           case DLL_THREAD_DETACH:

           case DLL_PROCESS_DETACH:

                  break;

           }

           return TRUE;

    }

     

    LONG APIENTRY  CPlApplet(HWND hwndCPL, UINT uMsg, LPARAM lParam1, LPARAM lParam2)

    {

           int i;

           LPCPLINFO lpCPlInfo;

     

           i = (int) lParam1;

     

           switch (uMsg) {

           case CPL_INIT: // first message, sent once

                  return TRUE;

     

           case CPL_GETCOUNT: // second message, sent once

                  return 1;

                  break;

     

           case CPL_INQUIRE: // third message, sent once per application

                  lpCPlInfo = (LPCPLINFO) lParam2;

                  lpCPlInfo->lData = 0;

                  lpCPlInfo->idIcon = IDI_ICON1;

                  lpCPlInfo->idName = IDS_STRING102;

                  lpCPlInfo->idInfo = IDS_STRING103;

                  break;

     

           case CPL_DBLCLK: // application icon double-clicked

                  MessageBox(NULL, TEXT("Tom66"), TEXT("Cuei666"), MB_OK);

                  break;

     

           case CPL_STOP: // sent once per application before CPL_EXIT

                  break;

     

           case CPL_EXIT: // sent once before FreeLibrary is called

                  break;

     

           default:

                  break;

     

           }

           return 0;

    }

     

    6 编译

    Project->Properties->Linker->Output File修改输出文件的后缀名为CPL,也可以不修改,到最后把dll改为cpl也可以的。

    四、       控制面板应用程序的安装与运行

    l  cpl文件拷贝到WindowsWindows CE)或Windows/system32(桌面版本Windows),可以在这里双击运行,也可以打开控制面板就可以看到该CPL文件所包含的控制面板条目,图标和文件就是你在CPLApplet里指定的,双击也可运行。

    2 在命令行下运行rundll32 shell32.dll,Control_RunDLL CPLTest.cplCPL文件名)@1(数字指定运行第几个控制面板条目,一个CPL文件可以包含几个控制面板条目)。在windows CE下,在命令行输入ctlpnl.exe /windows/cplmain.cpl,5,与桌面版本有些差异。

    3    windows的注册表[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Control Panel/Cpls] 下新建字符串,并指定cpl所在的完整路径,然后就可以在控制面板里看到新增加的控制面板条目。通过写注册表的方式,是一些应用软件惯用的方式,安装时可以通过InstallShield等安装制作工具将其添加到注册表,卸载时,删除注册表中相关的项。

    4  通过拷贝的方式,直接删除相应的CPL文件就可以了。至于有没有更好的方式,我还没有发现。

     

    五、参考资料:

    1 http://msdn2.microsoft.com/en-us/library/aa926276.aspx

    2 http://msdn2.microsoft.com/en-us/library/bb776392.aspx

    Add by myself
        通过修改注册表的方式,来安装 控制面板应用程序(Control panel application),必须在CPlApplet中响应CPL_INQUIRE消息,并在其中加载图标。(LPCPLINFO->IdIcon),否则打开控制面板时,所安装应用程序的图标无法加载,无法显示。
        而通过拷贝文件至System32目录,则可以响应CPL_INQUIRE或者CPL_NEWINQUIRE,可以在其中的任意一个响应函数中load图标。

    展开全文
  • 为了推广 UWP 应用,自身设置(按“Win+I”可以直接调用)功能尚未完善的前提下,微软就自作主张地弱化控制面板在 Windows 10 的存在,某次版本更新(应该是1703之后)后,开始菜单的右键菜单(即 “Win+X” ...

    为了推广 UWP 应用,在自身设置(按“Win+I”可以直接调用)功能尚未完善的前提下,微软就自作主张地弱化控制面板在 Windows 10 中的存在,在某次版本更新(应该是1703之后)后,开始菜单的右键菜单(即 “Win+X” 菜单)中的“控制面板”入口消失了。虽然常用的部分功能可以直接通过命令调用,但是依然很不方便,所以,外甥打灯笼——照旧,果断强奸系统。

    如上图所示,可以看到,控制面板入口已经消失不见了,接下来,我们需要自行创建一个控制面板的快捷方式。首先按“Win+E”打开资源管理器窗口,按“Alt+Up”或者退格键“Backspace”回到桌面目录下,直接在地址栏输入“%USERPROFILE%\Desktop”然后回车也可以,之后可以看到如下窗口,控制面板图标亦在其中,我们需要创建一个控制面板的快捷方式。

    快捷方式创建完成后,我们需要在系统中任意位置创建一个名为“Group4”的文件夹,然后把刚才创建的控制面板快捷方式移动到这个目录中并重命名为“控制面板(&P)”,括号中的为快捷键,可以任意指定,默认为“P”。

    接下来,我们需要用到一个工具,工具名称为“HashLnk”,请参照如下方式自行下载:

    点此进入riverar/hashlnk

    点击文中提供的链接到该项目主页,按图示点击“Download Zip”按钮下载压缩包,然后按“hashlnk-master\bin\hashlnk_0.2.0.0”的顺序逐层解压,最后得到如上图所示的工具软件,将“hashlnk.exe”复制到“%SystemRoot%\System32”目录下。

    之后,我们切回到刚才创建的“Group4”目录中,执行hasklnk命令转换我们创建的快捷方式,如下图所示,期间如果出现如下图所示的错误信息,说明系统中缺少 VC ++ 2010 可再发行组件包,请自行下载安装,下载链接已附在下方。

    问题参考链接MSVCP100.dll / MSVCR100.dll Missing

    You may install the latest Microsoft Visual C++ 2010 Redistributable Package according to the Windows 7 versions you are using.
     
    For 32bit: Microsoft Visual C++ 2010 Redistributable Package (x86)
     
    For 64bit: Microsoft Visual C++ 2010 Redistributable Package (x64)  

    命令执行成功后,我们就可以将我们转换后的快捷方式连同目录一起复制到系统“WIN+X”菜单目标目录中去了,请参照下图以及下方提供的命令执行此操作,避免因文件权限差异引发不可预测的问题。

    # 目标路径:%LOCALAPPDATA%\Microsoft\Windows\WinX\Group4
    
    robocopy "$ Group4 所在文件夹绝对路径" %LOCALAPPDATA%\Microsoft\Windows\WinX\Group4 /S /E /COPY:DAT

    复制完成后,注销重新登录,可以看到“Win+X”菜单中熟悉的控制面板项又出现了,至此本文目的已顺利达成。


    如果觉得上述操作过程太过复杂、繁琐,下面楼主为各位小伙伴提供一款便利的工具软件来达到目的。软件名称为“Win+X Menu Editor”,是一款免费工具软件,可以便捷地对系统“Win+X”菜单进行管理,包括上文讲述的添加控制面板,软件界面如下图所示,下载链接文后附上,请小伙伴们自行下载。

    下载地址Win+X Menu Editor 3.0

    展开全文
  • 在Windows 8.1安装完成以后,桌面上默认只有一个回收站图标,如果要把其他一些系统图标比如计算机、网络还有控制面板在桌面显示出来的话,可以通过桌面上点击右键,然后选“个性化”-》更改桌面图标,就可以出现一...
  • Windows CE下开发控制面板应用程序

    千次阅读 2007-08-12 10:33:00
    Windows CE下开发控制面板应用程序Windows CE控制面板为用户提供了一个设置系统参数和属性的小型应用程序运行中心。一个Windows CE操作系统可以包含标准的控制面板应用程序和用户自己开发的控制面板应用程序。操作...
  • Windows CE下开发控制面板应用程序...一个Windows CE操作系统可以包含标准的控制面板应用程序和用户自己开发的控制面板应用程序。操作系统开发人员也可以通过修改标准控制面板
  • WINCE系统的控制面板提供的应用是基于windows桌面系统下应用的小子集,WINCE系统控制面板系统由三部分组成,分别是Ctlpnl.exe、Control.exe和一些控制面板文件(.cpl)。Ctlpnl.exe和Control.exe相应地被操作...
  • 安装完成后的Microsoft Word 16.0,当打开时,总是弹出提示。虽然关闭后 Word 仍可以正常使用,但每次都要看见“它”,就有点舒服哈。 问题解决: 1. 按Windows 键+R键(或右击屏幕左下角开始菜单,打开运行...
  • 安装完Linux操作系统后,不少用户可能...于是,大家开始琢磨:要是有一个类似Windows控制面板”的界面工具来完成各项配置工作,那就好多了。其实,图形界面管理工具Webmin就可以解决这个问题,它可以轻松配置Linux
  • 每次vs出现问题的时候,卸载总是最令人烦恼的事情,不管怎么样都删除干净,这次因为caffe-windows的程序无法编译,因此想要更新vs的python包,更新了半天结果最后跳出更新失败,并且在控制面板中想要继续更新的...
  • windows天地论坛用户问:如何删除控制面板的无效卸载程序?点击卸载无法卸载,但是控制面板里的这个东西还,...卸载 Windows 控制面板“添加或删除程序”残留的程序名  控制面板中的“添加或删除程序”是卸载软件
  • 详细步骤包括:1 准备一张有IIS的安装性质光盘,win2000,winxp专业版都有的,你也可以从网上下iso文件2、X:/Windows/inf目录(X为Windows XP的盘符)下打开安装信息文件sysoc.inf,这个目录是隐藏的,大家使用时...
  • nvidia控制面板是由NVIDIA专门为使用NVIDIA硬件打造的一款控制软件,该软件支持用户能够充分利用屡获殊荣的NVIDIA硬件和ForceWare驱动程序的众多特性。该软件主要用于可视化设置显卡的参数以及配置,根据数据报道,...
  • 2.单机开始 控制面板 选择卸载程序3.早对话框左边找到“打开或者关闭windows功能”,单击打开4.滑动条往下,找到net framework 相关的文件和文件夹,然后再文件夹前面打勾5.现在看到子文件夹没勾选6.勾选上就可以...
  • WinCE控制面板添加应用程序

    千次阅读 2009-07-10 10:22:00
    作者:ARM-WinCEWinCE系统控制面板Windows系统控制面板原理是一样的,里面就是包含了一些应用程序。WinCE系统的控制面板由Ctlpnl.exe,Control.exe和一些.cpl文件组成,其中Ctlpnl.exe和Control.exe用于...
  • 控制面板的小应用程序

    千次阅读 2007-09-11 22:10:00
    控制面板的小应用程序 东北大学 张春明 张春丽 姜绍飞 01-4-23 上午 11:35:13 在Windows操作
  •  控制面板可以说是站长们接触最多的东西之一,网站的各种后台操作都需要由控制面板完成,不同的虚拟主机服务商可能所提供的虚拟主机控制面板不同,用户对于很多比较流行的控制面板知道的并多,下面我们介绍几款...
  • 1-一、安装NVIDIA控制面板

    千次阅读 2020-03-11 23:17:24
    一、安装NVIDIA控制面板 思路: 重新安装驱动程序,将自动出现“NVIDIA控制面板” 本文档安装流程: 安装GeForce Experience,进而安装驱动程序;(这一步也可以简化为直接安装驱动程序) 安装NVIDIA控制面板,用于...
  • Windows浏览器左侧的导航面板默认项目比较多,使用起来很方便,通常我希望打开窗口时,左侧的导航面板只显示“库”和“计算机”,这里介绍一下隐藏(或者是关闭)导航面板各类项目的方法:首先,下列所有操作...
  • cpl (控制面板应用程序) 编写及调试

    千次阅读 2009-05-22 11:02:00
    cpl (控制面板应用程序) 编写及调试 (以dialog 为例)控制面板程序是用户用于配置Windows环境的一些特殊动态连接库(DLL)。... 控制面板的功能和操作方式 控制面板程序的主要功能是显示一个对话框让用户完成
  • 我们做一些项目时,有时会要求输入一些参数来对系统进行设置,本来这些参数在控制面板中可以设置,但产品又可能要求用户自己打开控制进行设置。如果可以程序调用控制面板中的参数设置对话框,就OK了,即省略...
  • 由于各大厂商推广的DCH标准,使得驱动与控制面板分开了,须要分别安装。原来的呃标准版是集成一起的。并且如果版本不对就会出现错误。至于什么版本是对应的,按我的经验来说都是最新的(实际上我也清楚怎么判断,...
  • 对于一般使用者,通过上面注册免费版足够用了,上面是我的邀请链接注册并完成面板绑定的用户将直接赠送半年的宝塔小程序的抵扣劵。 有送需要专业版的,也可以联系我,我这边有永久版授权可以低价转让,官网1399一个...
  • windows无法完成请求的更改错误代码

    千次阅读 2021-02-21 23:06:25
    在控制面板—>程序—>启动或关闭Windwos功能,安装功能的时候,提示错误 windows无法完成请求的更改错误代码0x800F081F 1 解决方法 1,按“Win+R”组合键打开运行,命令端输入services.msc,回车,打开...
  • 已经安装了mysql的连接驱动但是管理工具 --数据源下没有找到该驱动 进到命令行,运行: C:\>cd \windows\SysWOW64 C:\Windows\SysWOW64>odbcad32
  • 18款开源/商用的Linux服务器控制面板

    万次阅读 2016-05-18 14:30:33
    当站长同时拥有很多网站站点,通过控制面板管理各种网站就会非常困难。为了满足不同需求,我们需要个性化的方案。cPanel 和 Plesk 是比较强大的付费控制面板,但有很多开源的控制面板有着类似的功能同时是免费...
  • * 即可完成程序内的转换及使用,可是个别开发工具转换起来并轻易,甚至有些软件让用户手动改控制面板中设置。*!* 为了让用户手动更改,所以找了找API函数,写成VFP实现对区域选项的更改。 *---------------...
  • 在windows server 2003 安装WINS

    千次阅读 2011-08-21 21:22:57
    WINS即Windows Internet Name Service,主要提供名字解析服务,将计算机的NetBIOS名称解析为IP地址~~ ...1)打开控制面板,打开“添加/删除程序”框,选择旁边的“添加/删除windows组件”; 2)在windows组件启动后,

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 80,331
精华内容 32,132
关键字:

在windows控制面板中不能完成