Cómo enumerar y ejecutar aplicaciones de Panel de Control disponibles

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 232536
Resumen
Este artículo explica cómo extraer una lista de aplicaciones de Panel de Control disponibles y cómo ejecutarlos desde la línea de comandos o desde otro programa.
Más información
El archivo Control.exe es una utilidad incluida con Windows 95, Windows 98, Windows NT 4.0, Windows 2000, Windows XP y Windows 2003 que lanza el panel aplicaciones. Las aplicaciones pueden utilizar la siguiente línea de comandos para iniciar un subprograma del Panel de Control:
C:\>control.exe mycontrol.cpl
Esto inicia el primer subprograma del Panel de Control en Mycontrol.cpl. Si tiene varios subprogramas del Panel de Control en Mycontrol.cpl, necesitará agregar el nombre del subprograma del Panel de Control para la línea de comandos, como se muestra en la siguiente:
 Control.exe Mycontrol.cpl,My Control
Para enumerar la lista de aplicaciones de Panel de Control disponibles en un archivo *.cpl, puede utilizar el siguiente código de ejemplo del programa:
// Control Panel Enumeration#include <stdio.h>#include <windows.h>#include <cpl.h>int main(int argc, char **argv, char **envp){       union {         NEWCPLINFOA NewCplInfoA;        NEWCPLINFOW NewCplInfoW;     } Newcpl;        HINSTANCE hLib; // Library Handle to *.cpl file    APPLET_PROC CplCall; // Pointer to CPlApplet() function    LONG i;        // -------------------    if (!(hLib = LoadLibrary(argv[1])))         return 1;	    if (!(CplCall=(APPLET_PROC)GetProcAddress(hLib,"CPlApplet")))    {        FreeLibrary(hLib);                return 2;    }        // -------------------    CplCall(NULL, CPL_INIT,0,0); // Init the *.cpl file        for (i=0;i<CplCall(NULL,CPL_GETCOUNT,0,0);i++)    {        printf("Control %s",argv[1]);                Newcpl.NewCplInfoA.dwSize = 0;        Newcpl.NewCplInfoA.dwFlags = 0;        CplCall(NULL,CPL_NEWINQUIRE,i,(long)&Newcpl);                if (Newcpl.NewCplInfoA.dwSize == sizeof(NEWCPLINFOW))        {   // Case #1, CPL_NEWINQUIRE has returned an Unicode String            wprintf(L",%s\n", Newcpl.NewCplInfoW.szName);        }        else         {   // Case #2, CPL_NEWINQUIRE has returned an ANSI String            if (Newcpl.NewCplInfoA.dwSize != sizeof(NEWCPLINFOA))            {                // Case #3, CPL_NEWINQUIRE failed to return a string                //    Get the string from the *.cpl Resource instead                CPLINFO CInfo;                                CplCall(NULL,CPL_INQUIRE,i,(long)&CInfo);				                LoadStringA(hLib,CInfo.idName,                    Newcpl.NewCplInfoA.szName,32);            }            printf(",%s\n", Newcpl.NewCplInfoA.szName);        }    } // for        CplCall(NULL,CPL_EXIT,0,0);        // -------------------    FreeLibrary(hLib);            return 0;}
Este programa (Enumcpl.exe) se toma como parámetro un archivo de *.cpl e imprimir las aplicaciones del Panel de Control disponibles en ese archivo.

Por ejemplo enumerar todos instalado *.cpl archivos en un sistema:
C:\>for %i in ( c:\winnt\system32\*.cpl ) do @enumcpl %iControl c:\winnt\system32\ups.cpl,&UPS   Control c:\winnt\system32\telephon.cpl,Telephony   Control c:\winnt\system32\ups.cpl,&UPS   Control c:\winnt\system32\telephon.cpl,Telephony   Control c:\winnt\system32\srvmgr.cpl,Ser&ver   Control c:\winnt\system32\srvmgr.cpl,Servi&ces   Control c:\winnt\system32\srvmgr.cpl,&Devices   Control c:\winnt\system32\ncpa.cpl,Network   Control c:\winnt\system32\main.cpl,Mouse   Control c:\winnt\system32\main.cpl,Keyboard   Control c:\winnt\system32\main.cpl,Printers   Control c:\winnt\system32\main.cpl,Fonts   Control c:\winnt\system32\odbccp32.cpl,OD&BC   Control c:\winnt\system32\console.cpl,Console   Control c:\winnt\system32\appwiz.cpl,Add/Remove Programs   Control c:\winnt\system32\access.cpl,Accessibility Options   Control c:\winnt\system32\inetcpl.cpl,Internet   Control c:\winnt\system32\DESK.CPL,Display   Control c:\winnt\system32\DEVAPPS.CPL,PC Card (PCMCIA)   Control c:\winnt\system32\DEVAPPS.CPL,SCSI Adapters   Control c:\winnt\system32\DEVAPPS.CPL,Tape Devices   Control c:\winnt\system32\INTL.CPL,Regional Settings   Control c:\winnt\system32\MMSYS.CPL,Multimedia   Control c:\winnt\system32\MMSYS.CPL,Sounds   Control c:\winnt\system32\MODEM.CPL,Modems   Control c:\winnt\system32\PORTS.CPL,Ports   Control c:\winnt\system32\SYSDM.CPL,System   Control c:\winnt\system32\TIMEDATE.CPL,Date/Time
Cualquiera de estas líneas se pueden ejecutar para iniciar la aplicación correspondiente del Panel de Control desde la línea de comandos.

Utilizando RunDLL32 también puede utilizarse para depurar una aplicación de Panel de Control, mediante el RunDLL32.exe como el programa y la cadena generada anteriormente como los argumentos de RunDLL32.
Referencias
164787 La interfaz de Windows 95 Rundll y Rundll32
166168 Cómo utilizar Rundll32 para depurar subprogramas del Panel de Control
183106 Cómo depurar extensiones de la hoja de propiedades de Panel de Control
192806 Cómo ejecutar las herramientas del Panel de control escribiendo un comando

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 232536 - Última revisión: 07/25/2015 10:44:00 - Revisión: 4.0

Microsoft Win32 Application Programming Interface

  • kbcpapplet kbhowto kbmt KB232536 KbMtes
Comentarios