Com o código abaixo é possível obter o Endereço de IP e HostName da máquina do usuário: Código: &SCOPED-DEFINE WSADATA_LENGTH 403 &SCOPED-DEFINE HOSTENT_ADDR_LIST 13 def var hostName as char no-undo. def var ip as char no-undo. run i-getTcpInfo (output hostName , output ip). MESSAGE "HostName : " hostName SKIP(1) "IP ...............: " IP VIEW-AS ALERT-BOX INFO BUTTONS OK. PROCEDURE i-GetTcpInfo: DEFINE OUTPUT PARAMETER p-TcpName AS CHARACTER NO-UNDO. DEFINE OUTPUT PARAMETER p-TcpAddr AS CHARACTER NO-UNDO. DEFINE VARIABLE w-TcpName AS CHARACTER NO-UNDO. DEFINE VARIABLE w-LENGTH AS INTEGER NO-UNDO. DEFINE VARIABLE w-RETURN AS INTEGER NO-UNDO. DEFINE VARIABLE ptr-WsaData AS MEMPTR NO-UNDO. DEFINE VARIABLE w-Hostent AS INTEGER NO-UNDO. DEFINE VARIABLE ptr-Hostent AS MEMPTR NO-UNDO. DEFINE VARIABLE ptr-AddrString AS MEMPTR NO-UNDO. DEFINE VARIABLE ptr-AddrList AS MEMPTR NO-UNDO. DEFINE VARIABLE ptr-ListEntry AS MEMPTR NO-UNDO. DEFINE VARIABLE w-TcpLong AS INTEGER NO-UNDO. ASSIGN p-TcpName = ? p-TcpAddr = ?. SET-SIZE(ptr-WsaData) = {&WSADATA_LENGTH}. RUN WSAStartup (INPUT 257, INPUT GET-POINTER-VALUE(ptr-WsaData), OUTPUT w-RETURN). SET-SIZE(ptr-WsaData) = 0. IF w-RETURN NE 0 THEN DO: MESSAGE "Error accessing WINSOCK support." VIEW-AS ALERT-BOX. RETURN. END. ASSIGN w-LENGTH = 100 w-TcpName = FILL(" ", w-LENGTH). RUN gethostname (OUTPUT w-TcpName, INPUT w-LENGTH, OUTPUT w-RETURN). IF w-RETURN NE 0 THEN DO: MESSAGE "Error getting tcp name." VIEW-AS ALERT-BOX. RUN WSACleanup (OUTPUT w-RETURN). RETURN. END. p-TcpName = ENTRY(1,w-TcpName,CHR(0)). RUN gethostbyname (INPUT w-TcpName, OUTPUT w-Hostent). IF w-Hostent EQ 0 THEN DO: MESSAGE "Error resolving host name." VIEW-AS ALERT-BOX. RUN WSACleanup (OUTPUT w-RETURN). RETURN. END. SET-POINTER-VALUE(ptr-Hostent) = w-Hostent. SET-POINTER-VALUE(ptr-AddrList) = GET-LONG(ptr-Hostent, {&HOSTENT_ADDR_LIST}). SET-POINTER-VALUE(ptr-ListEntry) = GET-LONG(ptr-AddrList, 1). w-TcpLong = GET-LONG(ptr-ListEntry, 1). RUN inet_ntoa (INPUT w-TcpLong, OUTPUT ptr-AddrString). p-TcpAddr = GET-STRING(ptr-AddrString, 1). RUN WSACleanup (OUTPUT w-RETURN). END PROCEDURE. PROCEDURE gethostname EXTERNAL "wsock32.dll" : DEFINE OUTPUT PARAMETER p-Hostname AS CHARACTER. DEFINE INPUT PARAMETER p-LENGTH AS LONG. DEFINE RETURN PARAMETER p-RETURN AS LONG. END PROCEDURE. PROCEDURE gethostbyname EXTERNAL "wsock32.dll" : DEFINE INPUT PARAMETER p-NAME AS CHARACTER. DEFINE RETURN PARAMETER p-Hostent AS LONG. END PROCEDURE. PROCEDURE inet_ntoa EXTERNAL "wsock32.dll" : DEFINE INPUT PARAMETER p-AddrStruct AS LONG. DEFINE RETURN PARAMETER p-AddrString AS MEMPTR. END PROCEDURE. PROCEDURE WSAStartup EXTERNAL "wsock32.dll" : DEFINE INPUT PARAMETER p-VersionReq AS SHORT. DEFINE INPUT PARAMETER ptr-WsaData AS LONG. DEFINE RETURN PARAMETER p-RETURN AS LONG. END PROCEDURE. PROCEDURE WSACleanup EXTERNAL "wsock32": DEFINE RETURN PARAMETER p-RETURN AS LONG. END PROCEDURE. Abb, Fernanda