Simplemente no use el verbo explícito. El uso de un verbo específico como 'abierto' es un gran error:
- 'abierto' puede ser no un verbo predeterminado (por ejemplo, puede ser el 'juego', 'editar' o 'correr')
- 'abierto' puede que no existe
es una manera más correcto simplemente pasan nula como verbo. El sistema seleccionará automáticamente verbo más apropiado: se utilizará
- verbo defecto, si se establece
será utilizado
- verbo 'abierta', si no hay verbo predeterminado se establece será utilizado
- primer verbo si no es por defecto y los verbos 'abiertas' están disponibles
- Si no se asignan los verbos - el sistema se recuperará "Abrir con" diálogo
En otras palabras, simple
ShellExecute(0, nil, 'C:\MyFile.StrangeExt', ...);
mostrará el cuadro de diálogo "Abrir con".
Utilice sólo un verbo específica si desea una acción específica. P.ej. 'imprimir', 'explorar', 'runas'. De lo contrario, simplemente pase nil.
esto podría hacerlo: 'rundll32.exe shell32.dll, OpenAs_RunDLL" C: \ Path \ TEXT.TXT "' –
posible duplicado de [Cómo abrir un cuadro de diálogo predeterminado para la ventana si ShellExecute falla debido a la asociación de archivos no en C++?] (Http: // stackoverflow.com/questions/6364879/how-to-open-a-default-dialog-for-window-if-shellexecute-failed-due-to-no-file-ass) – Anders