GRUPO DE LLAMADAS DOSxxx (3)
(Gestión de sesiones)


DosSelectSession

DosSelectSession permite a una sesión padre conmutar a uno de sus hijos a primer plano. El Shell de OS/2, por ser padre de todas las sesiones que se abran, puede conmutar a cualquiera de ellas. Para devolver a éste al primer plano está la conbinación CTRL+ESC.

#define INCL_BASE
#include <os2.h>

ULONG ulSessID;
APIRET rc; /* Codigo de error */

rc = DosSelectSession(ulSessID);

Parámetros

ulSessIDEl identificador de la sesión que se debe conmutar a primer plano. El valor especificado debe haber sido retornado por una llamada previa a DosStartSession, excepto cuando el valor es cero, en cuyo caso se pasa la propia sesión que hace la llamada.

Codigos de error

0Sin error
224No existe tal ventana (la sesión no se puede traer a primer plano)
369Identificador de sesión no válido
418Llamada no válida
459Reserva no válida
460La sesión no es hija de la actual
463Reintentar el Sub Alloc


DosStartSession

DosStartSession crea una nueva sesión e inicia en ella la ejecución de un nuevo programa.

#define INCL_BASE
#include <os2.h>

PSTARTDATA pStartData;
PULONG pSessID;
PPID ppidPID;
APIRET rc; /* Codigo de error */

rc = DosStartSession(pStartData, pSessID, ppidPID);

Parámetros

pStartDataPuntero a una estructura de sesión con estos datos:
Tamaño Nombre Descripción
Word Lengthlongitud de la estructura en bytes, incluyendo el propio campo de longitud. Puede ser 24, 30, 32, 50 o 60 bytes. No se debe especificar una longitud mayor de 32 para programas en modo texto, pues OS/2 no los cargará si el Presentation Manager no está presente.Cuando se especifica 24 o 30 bytes, OS/2 rellena el resto con ceros.
Word Relatedindica la relación entre la nueva sesión y el padre. Si es cero (SSF_RELATED_INDEPENDENT), la nueva sesión es independiente, y no puede ser tratada con DosSelectSession ni DosStopSession. Si es uno (SSF_RELATED_CHILD) la nueva sesión es hija de la que hizo la llamada, y se devuelven los valores de SessID y PID.
Word FgBgsi vale cero (SSF_FGBG_FORE), la nueva sesión se arrancará en primer plano (si es ventana, obtendrá el foco); si vale uno (SSF_FGBG_BACK), se iniciará en background.
Word TraceOptindica si se trazará la ejecución del nuevo programa. Si vale cero (SSF_TRACEOPT_NONE), no se traza; si vale 1 (SSF_TRACEOPT_TRACE) traza solo la sesión actual, sin incluir a los descendientes; si vale dos (SSF_TRACEOPT_TRACEALL) traza también todos los descendientes.
DWord PgmTitleun puntero a una cadena ASCIIZ que contiene el título del programa, tal y como se mostrará en el título de la ventana y en la lista de tareas. Puede medir hasta 61 bytes de longitud, incluyendo el byte final de cero.
DWord PgmNameun puntero a una cadena ASCIIZ que contiene la unidad, path y nombre del ejecutable a cargar en la nueva sesión.
DWord PgmInputspuede ser cero, o bien un puntero a una cadena ASCIIZ que contiene los argumentos que deben ser pasados al programa.
DWord TermQpuede ser cero, o bien un puntero a una cadena ASCIIZ que contiene el path completo y el nombre de una cola de sistema (ver DosCreateQueue). Esta cola es usada para devolver al proceso padre mensajes de terminación de las sesiones hijo. Cada mensaje está formado por dos WORD; la primera contiene el Session ID, y la segunda el resultado.
DWord Environmentpuede ser cero, o bien un puntero a una cadena de entorno que debe ser pasada al programa iniciado en la nueva sesión. Si es cero, el entorno que tome dependerá del InheritOpt. En las sesiones DOS, este campo está reservado, y debe ser cero.
Word InheritOptindica si el programa iniciado en la nueva sesión hereda el entorno del padre y sus ficheros abiertos. Si vale cero (SSF_INHERTOPT_SHELL), hereda el entorno del Shell del sistema. Si vale uno (SSF_INHERTOPT_PARENT), hereda el entorno del programa que hace la llamada.
Word Session Typedefine el tipo de sesión que será creado. Si vale cero (SSF_TYPE_DEFAULT), se usa la información de PgmHandle, o se permite al shell establecer el tipo. Si vale 1 (SSF_TYPE_FULLSCREEN) inicia el programa en una sesión a pantalla completa. Si vale 2 (SSF_TYPE_WINDOWABLEVIO) inicia una sesión de modo texto en ventana. Si vale 3 (SSF_TYPE_PM) inicia una sesión de ventana para programa que usen el Presentation Manager (incluyendo llamadas AVIO). Si vale 4 (SSF_TYPE_VDM) inicia una sesión DOS a pantalla completa. Si vale 7 (SSF_TYPE_WINDOWEDVDM) inicia una sesión DOS en ventana.
DWord IconFilepuede valer cero o ser un puntero a una cadena ASCIIZ que contiene la unidad, el path completo y el nombre de un fichero de icono. Si no se encuentra un icono o no se especifica, pone un icono por defecto.
DWord PgmHandlepuede valer cero o el handle retornado por WinAddProgram o WinQueryProgramHandle.
Word PgmControlun campo de bits que especifican el estado inicial de una sesión en ventana. Se ignora en aplicaciones a pantalla completa. El valor de cada bit representa lo siguiente:

Bit Valor Nombre Estado inicial
0 0x0000 SSF_CONTROL_VISIBLE Visible
0 0x0001 SSF_CONTROL_INVISIBLE Invisible
1 0x0002 SSF_CONTROL_MAXIMIZE Maximizada
2 0x0004 SSF_CONTROL_MINIMIZE Minimizada
3 0x0008 SSF_CONTROL_NOAUTOCLOSE No se cierra automáticamente al terminar la aplicación (solo sesiones VIO en ventana).
4-14 Reservados
15 0x8000 SSF_CONTROL_SETPOS Usa la posición y tamaño especificados

Word InitXPoscontiene la coordenada X inicial, en pixels, para la ventana. (0,0) es la esquina inferior izquierda de la pantalla. Se ignora en sesiones a pantalla completa.
Word InitYPoscontiene la coordenada Y inicial, en pixels, para la ventana. (0,0) es la esquina inferior izquierda de la pantalla. Se ignora en sesiones a pantalla completa.
Word InitXSizecontiene el ancho, en pixels, para la ventana. Se ignora en sesiones a pantalla completa.
Word InitYSizecontiene el alto, en pixels, para la ventana. Se ignora en sesiones a pantalla completa.
Word Reservadose debe rellenar con ceros. Para futuros usos.
DWord ObjectBufferpuntero a un buffer donde se devuelve el nombre del objeto que ha hecho fallar la llamada.
DWord ObjectBuffLenes la longitud, en bytes, del buffer apuntado por ObjectBuffer.
pSessIDPuntero a una doble palabra donde se almacena el identificador de la nueva sesión creada. Es retornado solo cuando el valor especificado en related es 1. Se necesita para las llamadas a DosSelectSession y DosStopSession.
ppidPIDPuntero a una doble palabra donde se almacena el identificador del proceso creado en la nueva sesión. El PID devuelto puede no ser válido para algunas llamadas (por ejemplo, DosSetPriority)) que necesitan una relación padre/hijo.

Codigos de error

0Sin error
369Identificador de sesión no válido
418Llamada no válida
460La sesión no es hija de la actual
463Reintentar el Sub Alloc


DosStopSession

DosStopSesion finaliza una sesión.

#define INCL_BASE
#include <os2.h>

ULONG ulTargetOption;
ULONG ulSessID;
APIRET rc; /* Codigo de error */

rc = DosStopSession(ulTargetOption, ulSessID);

Parámetros

ulTargetOptionSi vale cero (STOP_SESSION_SPECIFIED) finaliza sóolo la sesión indicada por SessID. Si vale 1 (STOP_SESSION_ALL) finaliza todas las sesiones.
ulSessIDEl identificador de la sesión a finalizar. El valor es el devuelto por una llamada a DosStartSession. Este parámetro se ignora si TargetOption vale uno.

Codigos de error

0Sin error
369Identificador de sesión no válido
418Llamada no válida
458Opción de STOP no válida
459Reserva no válida
460La sesión no es hija de la actual
463Reintentar el Sub Alloc

 Indice