Pregunta

Estoy tratando de iniciar mediante programación explorer.exe pero no estoy teniendo suerte.

Este es mi código:

cout << pName << "died, lets restart it." << endl;
STARTUPINFO startupInfo = {0};
startupInfo.cb = sizeof(startupInfo);

PROCESS_INFORMATION processInformation;

if(CreateProcess(pName, NULL, NULL, NULL, false, NORMAL_PRIORITY_CLASS, NULL, NULL, &startupInfo, &processInformation) == 0){
    cout << "Error starting " << pName << ": " << GetLastError() << endl;
}

y pName es explorer.exe

Alguien puede decirme qué estoy haciendo mal?Me sale el código de error '2', que es ERROR_FILE_NOT_FOUND

¿Fue útil?

Solución

El primer parámetro es el nombre de la aplicación; la segunda es la línea de comandos. Intente especificar "explorer.exe" como el segundo parámetro.

MSDN artículo :

  

lpApplicationName [in, opcional]

     

El nombre del módulo que debe ejecutarse.   Este módulo puede ser una basada en Windows   solicitud. Puede ser algún otro tipo   del módulo (por ejemplo, MS-DOS o   OS / 2) si el subsistema es apropiada   disponibles en el equipo local.

     

La cadena puede especificar la ruta completa   y el nombre del fichero del módulo para ejecutar   o puede especificar un nombre parcial. En   el caso de un nombre parcial, el   función utiliza la unidad actual y   directorio actual para completar la   especificación. La función no lo hará   utilizar la ruta de búsqueda . este parámetro   debe incluir la extensión de nombre de archivo;   Se asume ninguna extensión predeterminada.

Otros consejos

Usted probablemente debe dar "ShellExecuteEx"un intento.Esta función le permite especificar un archivo o carpeta y un verbo que describe qué hacer con él.Si utiliza "explore"como el verbo, se abrirá el Explorador de Windows con el dado carpeta.

Es sorprendentemente difícil encontrar información relevante sobre la forma de fiable Reiniciar Windows Explorer. En Windows de 64 bits 7/8, el método ShellExecute no funciona correctamente y conduce a cosas tales como la copia de archivos y los íconos superpuestos ser completamente roto.

La forma más fiable parece utilizar stdlib.h llamada al sistema:

system("start explorer");

Si usted está tratando de apagar y reiniciar el explorador, es posible que desee desactivar mediante programación clave de registro AutoRestartShell, lo que le impide controlar cuando explorer se reinicia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top