2011-06-10 15 views
6

Uso ShellExecute para abrir archivos. En una sola máquina entre más de 2000 usuarios no puedo abrir archivos de doc. docx se abren con Wordpad.Al pasar 'abrir' a ShellExecute no se abre un archivo de palabra en una máquina específica

Word 2010 está correctamente instalado y desde el doble cliqueo del explorador en un archivo de palabra se abre la palabra correctamente, además el documento se muestra con el icono correcto en el explorador. Tenga en cuenta que todos los otros archivos funcionan bien (como xls, xlsx, pdf, ...)

¿Alguien sabe por qué? Yo checekd y "uso esta aplicación para abrir archivos" está marcada.

En código que comprobar el error y sé que el mensaje de error es

SE_ERR_ASSOCINCOMPLETE o SE_ERR_NOASSOC

(becuase en ambos casos muestro un error "no appliaction está asociado con el tipo de archivo", así que no sé cuál de los errores hay, le dije al cliente que lo depurara para verlo, pero no creo que sea tan importante en este caso).

¿Alguien tiene una idea? Esto es lo que yo uso para abrir el archivo:

ShellExecute(0, 'open', PWideChar(MyFilePath), '', '', SW_SHOWNORMAL); 

Nota: me parece que algún problema como hay en el registro de Windows para esta máquina, se trata de una máquina Windows 7 casi frescos.

NOTA para quién vota por cerrar esta pregunta como fuera de tema: de hecho es una pregunta en WinAPI: ¿por qué esta API no funciona como se espera cuando lo hace desde el explorador? Así que esto no está fuera de tema, especialmente winapi está en las etiquetas.

+0

En cuanto a su edición, winapi está solo en las etiquetas porque las edité y me deshice de la poco útil etiqueta Delphi. Pero creo que esto es probablemente más un problema con la máquina en particular que un problema de codificación, de ahí el fuera de tema, pasar al superusuario cerrar votos. –

+0

@David, sí, sé que se rompió, pero fue más fácil para mí decir "especialmente winapi está en las etiquetas", entonces "especialmente winapi está en las etiquetas incluso si originalmente no lo agregué y fue hecho por una edición de David Heffeman ". :) – LaBracca

Respuesta

5

Esto es solo una suposición, pero sospecho que Explorer está usando NULL donde tiene "abierto". Esto puede desencadenar un comportamiento sutilmente diferente si hay algo incorrecto en las asociaciones de archivos registradas del usuario. Por ejemplo, si hay un verbo predeterminado que no sea "abrir".

+0

¿No suele ser al revés? –

+1

@David: especificando 'NULL' le dice a' ShellExecute() 'que invoque el verbo registrado predeterminado, volviendo a' "abrir" 'si no existe, y volviendo al primero encontrado si' "abrir" 'no existe. La mayoría de los códigos heredados usaban el código fijo '' abrir ''porque ese solía ser el típico verbo predeterminado. Eso no es tan común hoy en día, por lo que es mejor usar 'NULL' ahora y dejar que el sistema operativo decida qué verbo invocar. –

+0

Parece bastante improbable que Word no haya registrado el verbo abierto –

Cuestiones relacionadas