Cómo iniciar un programa / software con Microsoft Visual C ++

La llamada se ve así:

SHELLEXECUTEINFO ShExecInfo;
ShExecInfo.cbSize = sizeof (SHELLEXECUTEINFO);
ShExecInfo.fMask = NULL;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = pszParseName;
ShExecInfo.lpParameters = NULL;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_MAXIMIZE;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx (& ShExecInfo);

Cuando pszParseName función anterior, pszParseName es un nombre de archivo, como “something.html” y Windows intentará localizar el tipo correcto de ejecutable. Tenga en cuenta el uso del valor “NULL” para lpVerb. En su pregunta, está utilizando un lpVerb que apunta a la cadena constante “open”

De manera confusa, MSDN dice:

Si el archivo de interés es un ejecutable, es posible que su aplicación simplemente quiera iniciarlo.

Sin embargo, si pszParseName es un ejecutable, puede invocarlo al no proporcionar el verbo “abierto” (usando NULL para ese parámetro).

En general, tratar de determinar la lista de verbos disponibles para un archivo en particular es algo complicado. En muchos casos, simplemente puede establecer el parámetro lpVerb en NULL, que invoca el comando predeterminado para el tipo de archivo. Este procedimiento suele ser equivalente a configurar lpVerb como “abierto”, pero algunos tipos de archivos pueden tener un comando predeterminado diferente. Para obtener más información, consulte Ampliación de los menús contextuales y la documentación de referencia de ShellExecuteEx.

Si el uso de NULL para lpVerb también falla, es posible que desee invocar “CMD”:

ShellExecute (NULL, NULL, “cmd C: \\ Archivos de programa (x86) \\ Mozilla Firefox \\ firefox.exe”, NULL, NULL, SW_SHOWMAXIMIZED);

Tenga en cuenta que “SW_SHOWMAXIMIZED” puede o no funcionar correctamente.

¡Gracias Microsoft!

Aplicaciones de lanzamiento de RTFM (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO)

¿No funciona cómo ?

¿Recibe un mensaje de error o algo así?

¿Olvidó #include ?

¿ _T() usar las API de Unicode, pero olvidó usar la macro _T() para hacer que sus cadenas sean Unicode?

Además, ¿estás seguro de que tu Firefox está en “Archivos de programa (x86)” y no en el de 64 bits?

Para mí, lo siguiente funciona con el (casi) más nuevo Visual Studio, configuración predeterminada del proyecto, en Windows 8.1 de 64 bits con Firefox de 64 bits:

#include

int _tmain (int argc, _TCHAR * argv [])
{
ShellExecute (NULL, _T (“abierto”), _T (“C: \\ Archivos de programa \\ Mozilla Firefox \\ firefox.exe”), NULL, NULL, SW_SHOWMAXIMIZED);
devuelve 0;
}

PD: Además, su pregunta es más sobre Windows que sobre C ++. Este material de ShellExecute no proviene de C ++.

Función ShellExecute

Valor de retorno

Tipo: HINSTANCE

Si la función tiene éxito, devuelve un valor mayor que 32. Si la función falla, devuelve un valor de error que indica la causa de la falla. El valor de retorno se convierte en HINSTANCE para compatibilidad con versiones anteriores de aplicaciones de Windows de 16 bits. Sin embargo, no es una verdadera HINSTANCE. Se puede transmitir solo a un int y se puede comparar con 32 o con los siguientes códigos de error a continuación.

Puede tomar el valor de retorno y lo que sea que esté obteniendo, puede correr por la página web y averiguar el motivo exacto de la devolución fallida. Probablemente tomará un poco más de tiempo que encontrar la solución lista para usar, ¡pero definitivamente disfrutará el aprendizaje!

¡Buena suerte! Happy Coding 🙂

More Interesting

¿Sería atípico que a un desarrollador estadounidense se le ofrezca un puesto como ingeniero de software en el Reino Unido y reciba un estipendio adicional de mudanza?

¿Cómo puedo saber si mi desarrollador va lento o rápido (si no soy técnico)?

Cómo convertirse en gerente de un ingeniero de software

¿Realmente vale la pena la implementación continua?

¿Cómo se actualizan los productos basados ​​en la Web sin interrumpir el servicio?

¿Qué se debe hacer para crear una atmósfera en los colegios / escuelas de la India, para que los estudiantes comiencen a aprender programación desde su primer año de universidad / a una edad temprana?

¿Qué proyecto o empresa utiliza el modelo de cascada?

¿Cuáles son algunos de los problemas de diseño de codificación o arquitectura relacionados con Google que causan problemas?

¿Qué tan difícil es ingresar a las principales compañías tecnológicas de Silicon Valley desde un entorno universitario extranjero de bajo rango?

¿Alguien conoce un software / plataforma útil para verificar automáticamente si algunas respuestas de la encuesta son correctas?

¿Quiénes son los mejores desarrolladores de aplicaciones iOS en Silicon Valley?

¿Por qué Windows requiere la combinación de teclas Ctrl + Alt + Supr para iniciar sesión?

¿Cuál es la mejor manera de autodidacta las habilidades y el conocimiento adquiridos en un título de informática típico, suponiendo que una persona solo tenga un conocimiento funcional de las computadoras?

¿Por qué DevOps se convirtió en una necesidad importante para las compañías de software?

¿Existe una capacitación específica relacionada con la capacitación en pruebas de software?