winbase.h

Estructura STARTUPINFO

Definición

typedef struct _STARTUPINFO { // si 
    DWORD   cb; 
    LPTSTR  lpReserved; 
    LPTSTR  lpDesktop; 
    LPTSTR  lpTitle; 
    DWORD   dwX; 
    DWORD   dwY; 
    DWORD   dwXSize; 
    DWORD   dwYSize; 
    DWORD   dwXCountChars; 
    DWORD   dwYCountChars; 
    DWORD   dwFillAttribute; 
    DWORD   dwFlags; 
    WORD    wShowWindow; 
    WORD    cbReserved2; 
    LPBYTE  lpReserved2; 
    HANDLE  hStdInput; 
    HANDLE  hStdOutput; 
    HANDLE  hStdError; 
} STARTUPINFO, *LPSTARTUPINFO; 

Esta estructura se usa junto con la función CreateProcess para definir las propiedades de la ventana principal si se crea una nueva ventana para un proceso nuevo. Para procesos con interfaz gráfico de usuario (GUI), ésta información afecta a la primera ventana creada con la función CreateWindow. Para procesos de consola, ésta información afecta a la ventana de consola si el proceso crea una nueva ventana de consola. Un proceso puede usar la función GetStartupInfo para recuperar la estructura STARTUPINFO especificada cuando un proceso fue creado.

Descripción

cb: especifica el tamaño en bytes de la estructura.

lpReserved: reservado. Poner este miembro a NULL antes de pasar la estructura a CreateProcess.

lpDesktop:
Windows 95: ignora este miembro.
Windows NT: apunta a una cadena (terminada con cero) que especifica o bien el nombre del escritorio sólo o bien ambos: el nombre de la estación de ventanas y del escritorio para este proceso. Una barra inversa en la cadena indica que ésta incluye ambos nombres: escritorio y estación de ventanas. En otro caso, lpDesktop se interpreta como el nombre de escritorio. Si lpDesktop es NULL, el nuevo proceso heredará la ventana-estación y el escritorio del proceso padre.

lpTitle: para procesos de consola, éste es el título mostrado en la barra de título si se crea una nueva ventana de consola. Si es NULL, se usará en su lugar el nombre del fichero ejecutable. Este parámetro debe ser NULL para GUI o procesos de consola que no creen nuevas ventanas de consola.

dwX, dwY: se ignoran a no ser que dwFlags especifique STARTF_USEPOSITION. Indican un desplazamiento x e y, en pixels, de la esquina superior izquierda de una ventana si se crea una nueva ventana. Los desplazamientos son referentes a la esquina superior izquierda de la pantalla. Para procesos GUI, la posición especificada se usa la primera vez que el nuevo proceso llama a CreateWindow para crear una ventana superpuesta si el parámetro x de CreateWindow es CW_USEDEFAULT.

dwXSize, dwYSize: se ignoran a no ser que dwFlags especifique STARTF_USESIZE. Indican el ancho (dwXSize) y el alto (dwYSize), en pixels, de la ventana si se crea una ventana nueva. Para procesos GUI, son usados sólo la primera vez que el nuevo procesos llama a CreateWindow para crear una ventana superpuesta si el parámetro nWidth de CreateWindow es CW_USEDEFAULT.

dwXCountChars, dwYCountChars: se ignoran a no ser que dwFlags especifique STARTF_USECOUNTCHARS. Para procesos de consola, si se crea una nueva ventana de consola, dwXCountChars indica el ancho del buffer de pantalla en columnas de caracteres, y dwYCountChars indica la altura del buffer de pantalla en líneas de caracteres. Estos valores se ignoran el procesos GUI.

dwFillAttribute: se ignora a no ser que dwFlags especifique STARTF_USEFILLATTRIBUTE. Para procesos de consola, indica los colores iniciales de texto y fondo si se crea una nueva ventana de consola. Estos valores se ignoran en procesos GUI.

dwFlags: se trata de un campo de bits que determina si determinados miembros de la estructura STARTUPINFO serán usados cuando el proceso cree una ventana. Puede usarse cualquier combinación de los siguientes valores:

Valor Significado
STARTF_USESHOWWINDOW Si no es especifica este valor, el miembro wShowWindow será ignorado.
STARTF_USEPOSITION Si no se especifica este valor, los miembros dwX y dwY serán ignorados.
STARTF_USESIZE Si no se especifica este valor, los miembros dwXSize y dwYSize serán ignorados.
STARTF_USECOUNTCHARS Si no se especifica este valor, los miembros dwXCountChars y dwYCountChars serán ignorados.
STARTF_USEFILLATTRIBUTE Si no se especifica este valor, el miembro dwFillAttribute será ignorado.
STARTF_FORCEONFEEDBACK

Si se especifica este valor, el cursor permanecerá dos segundos en modo "feedback" después de que se llame a CreateProcess. Si durante esos dos segundos el proceso hace la primera llamada GUI, el sistema proporciona cinco segundos más al proceso. Si durante esos cinco segundos el proceso muestra una ventana, el sistema proporciona cinco segundos más al proceso para que termine de dibujar la ventana.

El sistema apaga el cursor "feedback" después de la primera llamada a GetMessage, sin preocuparse de si el proceso está dibujando.

Para más información sobre "feedback", ver la sección de observaciones del final.

*feedback: retroalimentación.

STARTF_FORCEOFFFEEDBACK Si se especifica, se eliminará el cursor "feedback" durante el arranque del proceso. Se mostrará el cursor normal. Para más información sobre "feedback", ver la sección de observaciones del final.
STARTF_SCREENSAVER

Si se especifica, el sistema tratará la aplicación como un salva pantallas:

  • El sistema permite a la aplicación iniciarse en la prioridad de primer plano de la clase de prioridad pasada a la función CreateProcess.
  • Cuando la aplicación comprueba la entrada usando las funciones GetMessage o PeekMessage por primera vez, el sistema la cambia a la clase de prioridad desocupado (idle). Esto deja a las aplicaciones de fondo tener prioridad sobre ella.
  • Cuando el usuario mueve el ratón o presiona una tecla, el sistema da a la aplicación la prioridad de primer plano o la clase de prioridad pasada originalmente en la función CreateProcess.

Crear un salva pantallas con NORMAL_PRIORITY_CLASS le permite iniciarse y terminar por encima de aplicaciones con prioridad normal.

STARTF_USESTDHANDLES

Si se especifica este valor, se usan los manipuladores de entrada estándar, de salida y de error del proceso a los especificados en los miembros hStdInput, hStdOutput y hStdError de la estructura STARTUPINFO. El parámetro fInheritHandles de la función CreateProcess debe ser puesto a TRUE para que funcione correctamente.

Si no se especifica, se ignoraran los miembros hStdInput, hStdOutput y hStdError de la estructura STARTUPINFO.

wShowWindow: se ignora a no ser que dwFlags especifique STARTF_USESHOWWINDOW. Para procesos GUI, wShowWindow indica el valor por defecto la primera vez que se llama a ShowWindow, si el parámetro nCmdShow de la función ShowWindow es SW_SHOWDEFAULT. El miembro wshowWindow puede tener como valor cualquier constante SW_ definida en WINUSER.H. En versiones anteriores de Windows, la función WinMain tenía un parámetro nCmdShow que se recomendaba que la aplicación pasara a las funciones CreateWindow o ShowWindow. El parámetro nCmdShow ya no está disponible a través de WinMain. Ahora, las aplicaciones deben usar SW_SHOWDEFAULT como el comando de por defecto en ShowWindow, en este caso, ShowWindow usará el miembro wShowWindow de la estructura STARTUPINFO del proceso.

cbReserved2: reservado; debe ser cero.

lpReserved2: reservado; debe ser NULL.

hStdInput: se ignora a no ser que dwFlags especifique STARTF_USESTDHANDLES. Indica un manipulador que se usará como manipulador de entrada estándar del proceso si se especifica STARTF_USESTDHANDLES.

hStdOutput: se ignora a no ser que dwFlags especifique STARTF_USESTDHANDLES. Indica un manipulador que se usará como manipulador de salida estándar del proceso si se especifica STARTF_USESTDHANDLES.

hStdError: se ignora a no ser que dwFlags especifique STARTF_USESTDHANDLES. Indica un manipulador que se usará como manipulador de error estándar del proceso si se especifica STARTF_USESTDHANDLES.

Observaciones:

Si un proceso GUI está comenzado y ni STARTF_FORCEONFEEDBACK ni STARTF_FORCEOFFFEEDBACK fueron especificados, se usará el proceso de cursor "feedback". Un proceso GUI es uno cuyo subsistema es especificado como "windows."