RE:Alguien utilizo la API WTSQuerySessionInfomatio
yo mismo encontre el problema lo dejo ya que me costo mucho encontrar esto, espero que alguien le sirva solución....
POWER BUILDER API PARA TERMINAL SERVER
//APIS necesarias para recuperar los datos del terminal server-Agregar a las
//Declare External Function
Function Boolean WTSQuerySessionInformationA( uLong hServer, uLong SessionId, uLong WTSInfoClass, Ref ulong ppBuffer, Ref uLong pBytesReturned) Library "Wtsapi32.dll"
SUBROUTINE WTSFreeMemory( ULONG pMemory ) Library "Wtsapi32.dll"
//recupera un dato de la direccion especificada
SUBROUTINE MoveMemoryPointerToString( REF String Destination, ULong ul_Source, ULong ul_Size ) Library "KERNEL32.DLL" Alias For "RtlMoveMemory"
SUBROUTINE MoveMemoryPointerToULONG( REF ulong Destination, ULong ul_Source, ULong ul_Size ) Library "KERNEL32.DLL" Alias For "RtlMoveMemory"
/*Esta funcion permite obtener los datos del terminal server*/
/*Retorna -1 si no se encuentra en un terminal server*/
Boolean lb_succes
Integer RetVal = 0
uLong ll_BuffLen = 256
string ls_nombre
string ls_terminal
/*Estos datos se agregan para la terminal actual*/
ulong WTS_CURRENT_SERVER_HANDLE=0
ulong WTS_CURRENT_SESSION=-1
ulong WTS_UserTerminal=10
ulong lulong_dato
ulong lulong_sessionid
ls_nombre=space(256)
/*=============================*/
/*Recupero el nombre de la terminal*/
/*===================== ========*/
lb_succes = WTSQuerySessionInformationA(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, WTS_UserTerminal, lulong_dato,ll_BuffLen)
IF lb_succes = TRUE THEN
MoveMemoryPointerToString( ls_nombre, lulong_dato, ll_BuffLen)
is_terminal=ls_nombre
ELSE
//si no es un terminal server devuelvo -1
return -1
END IF
//libero la memoria utilizada en la función anterior
WTSFreeMemory( ll_BuffLen)
/*===================*/
/*Recupero el sessionid */
/*===================*/
lb_succes = false
lb_succes = WTSQuerySessionInformationA(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, WTSSessionId, lulong_dato,ll_BuffLen)
IF lb_succes = TRUE THEN
MoveMemoryPointerToULONG(lulong_sessionid,lulong_dato,ll_BuffLen)
iulong_session_id=lulong_sessionid
ELSE
//no se encontro el session id
return -2
END IF
WTSFreeMemory( ll_BuffLen)
return 0