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”
- ¿Cómo puede alguien hacer que la carrera salte de ser ingeniero de software a convertirse en ingeniero financiero para una institución financiera?
- ¿Cuál es su visión sobre el mundo en el futuro cercano?
- ¿Es factible la ingeniería inversa para piezas de chapa?
- Si un verdadero artista recibe un proyecto con un objetivo final estrictamente definido (como un proyecto de software), con limitaciones de costo y calendario, ¿prosperará o tendrá dificultades?
- ¿Por qué la mayoría de los estudiantes de ciencias de la computación en la India se centran más en los marcos de aprendizaje y los lenguajes de programación en lugar de perfeccionar sus habilidades de resolución de problemas (es decir, estructuras de datos y algoritmos)?
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)