Pregunta

Estoy tratando de depurar y resolver algunos problemas con una aplicación Win32 macro escrito en C ++ sin embargo estoy teniendo el problema más extraño.

Tengo que poner en marcha un programa de 16 bits y luego simular la introducción de datos en y han estado utilizando ShellExecute durante más de dos años. No he tocado este código real en absoluto, pero ahora no funciona.

Estoy haciendo ShellExecute(NULL, "open", exe_path.c_str(), NULL, "", SW_SHOWDEFAULT);. Esto ha funcionado sin problemas durante años, pero de repente, que dejó de funcionar . Me da un código de error ACCESS_DENIED. Googled y al parecer este es un tema muy común con el lanzamiento de aplicaciones de 16 bits.

El entorno XP SP2 estación de trabajo no ha cambiado en absoluto, y que en realidad estaba trabajando hasta reconstruí hace un rato (he reconstruido antes de que muchas veces).

El código es dentro de una función procedimiento de ventana y cuando me lo saco y poner en marcha el programa en la función WinMain funciona, pero el código tiene que estar en el procedimiento de ventana ...

he intentado numerosas alternativas pero todos dan el mismo problema.

El mayor problema con esto es que estaba trabajando entonces, de repente decidió que no iba a sin cambios en el código y medio ambiente! De hecho, fue a mitad de camino a través de pruebas cambios que pensaron que sería dejar de trabajar.

Por favor ayuda ya que no puedo hacer nada sin la puesta en marcha del programa. Es el primer paso en el código que estoy depuración!

¿Fue útil?

Solución

he descubierto el problema. He cambiado el parámetro lpDirectory (de la que estaba suministrando NULL o "") en el directorio del ejecutable, usando la función PathRemoveFileSpec().

La aplicación pone en marcha de nuevo. ahora que pueda seguir la fijación de la descansar del programa!

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