Programación General > Power Builder

 Obtener Nombre De La Pcy Usuario

(1/2) > >>

evmuv:
Saludos.
Quisiera saber si es posible capturar el nombre de la PC y del usuario, utilicé esto pero no me dio resultado, porque al final, en sle_PC y sle_USER sólo me mostró unas letras medio raras, en chino me parece, lo cual si me parece inexplicable(ojalá que alguien me diga porqué) Estoy usando el Power Builder 10, y mi Sistema Operativo es el Windows 2003 Server, este es el código que usé:

uint li_Longitud_nombre_maquina, li_longitud_usuario_windows
string ls_Datos_Guardar
int li_Fichero
string maquinanombre, usuarionombre
maquinanombre = SPACE(250)
usuarionombre = SPACE(250)
li_Longitud_nombre_maquina = 250
li_longitud_usuario_windows = 250

GetUserNameA(usuarionombre,li_Longitud_Usuario_Windows)
GetComputerNameA(maquinanombre ,li_Longitud_Nombre_Maquina)
sle_PC.text=maquinanombre
sle_USER.text=usuarionombre

Gracias de antemano  :comp:

leoandres:
Saludos...

Estas definiendo la función externa?
Define la variable que da longitud como long (tu la estas definiendo entero corto sin signo)...
Aquí tienes ejemplos de las dos cosas...

GetComputerNameA( )
This function returns the computer's name into a string by reference. Be sure to allocate enough space for the string or you'll get a GPF when you exit PowerBuilder. There is no PowerBuilder equivalent.

Global External Function:
FUNCTION boolean GetComputerNameA(ref string cname,ref long nbuf) LIBRARY "Kernel32.dll"

Script:
string ls_compname
long ll_buf
ll_buf = 25
ls_compname = space(ll_buf)
GetComputerNameA(ls_compname, ll_buf)
MessageBox("Computer name is:", ls_compname)

GetUserNameA( )
This function returns the current users logon name. Be sure to allocate enough space for the string or you'll get a GPF when you exit PowerBuilder. There is no PowerBuilder equivalent.

Global External Function:
FUNCTION boolean GetUserNameA(ref string uname, ref ulong slength) LIBRARY "ADVAPI32.DLL"

Script:
string ls_username
string ls_var
ulong lu_val
boolean rtn
lu_val = 255
ls_username = Space( 255 )
rtn = GetUserNameA(ls_username, lu_val)
Messagebox("GetUserNameA", "Username = " + string(ls_username))

Para mas información de funciones del windows que puedes utilizar entra con este link...

http://www.ikarhomecenter.ru/index.php?p=p...etComputerNameA

evmuv:
Hola, primero, gracias por la ayuda.
Pero, no lo vas a creer, me siguen saliendo las mismas letras chinas(creo que chinas) en el mensaje, la verdad es que no se a que se deberá, esto es lo ke me sale en los mensajes:
Computer name is:  䕓噒䍅J
Username = 摁業楮瑳慲潤r
No sé si se lea, pero letras chinas, espero que alguien pueda ayudarme, y explicarme porque salen ese tipo de letras, gracias.

preatorian:
Saludos

yo coloque el código que indican pero de la misma forma me salen símbolos y no el nombre del PC.

Juanra15:
hola 摁業楮瑳慲潤

en global external function
function int gethostname ( ref string name, int namelen ) library "wsock32.dll"

hace una funcion sin parametros que retorne un string

string      ls_HostName = space(128)
string      ls_IpAddress
int      li_version = 257
blob{4}    lb_hostaddress
unsignedinteger version
unsignedinteger highversion
character description[257]
character systemstatus[129]
unsignedinteger maxsockets
unsignedinteger maxupddg
string vendorinfo
IF gethostname ( ls_HostName, len(ls_HostName) ) >= 0 THEN
      return upper(ls_HostName)
END IF

y despues es sle_nombrePc.text = nombreFuncion()

y listo el pollo, probalo y comenta si te funciono.

Saludos Juan

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa