2012-02-24 14 views
10

Tengo una aplicación de consola Delphi que al final necesita iniciar una de dos aplicaciones.¿Está bien pasar un identificador de ventana nula a ShellExecute?

Tengo algunos problemas para hacer que ShellExecute funcione sin errores, y creo que el problema está asociado con no tener un control para la aplicación de la consola.

La línea que me está causando dolor es:

ShellExecute(0, 'open', 'someapplication.exe', nil, nil, SW_SHOWNORMAL); 

creo que el 0 en el mango es el problema, ya que compila bien y se ejecuta en el depurador bien, pero si trato de ejecutar el archivo ejecutable Recibo un error no controlado (la aplicación de la consola cree que ha terminado felizmente).

+0

Creo que es necesario deshabilitar "Depurar procesos engendrados" en IDE, presionar F6 y escribir "depurar procesos engendrados", si eso está marcado, desmarcarlo y volver a intentarlo – ComputerSaysNo

+0

HWND (0) es HWND_DESKTOP, para su información. – OnTheFly

Respuesta

11

Pasando 0 para el parámetro hwnd está bien. El documentation describe el parámetro así:

Un identificador de la ventana primaria utilizada para mostrar una IU o mensajes de error. Este valor puede ser NULL si la operación no está asociada con una ventana.

Tu error se debe a otra cosa.

+0

Gracias - ¡Resulta que no estaba lanzando mi Módulo de datos manualmente! –

Cuestiones relacionadas