SoloCodigo
Programación General => Power Builder => Mensaje iniciado por: evmuv en Martes 19 de Septiembre de 2006, 22:56
-
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:
-
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 (http://www.ikarhomecenter.ru/index.php?p=pb_2-2-e#GetComputerNameA)
-
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.
-
Saludos
yo coloque el código que indican pero de la misma forma me salen símbolos y no el nombre del PC.
-
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
-
Una más completa:
http://www.powerbuilderblog.blogspot.com.br/2013/01/autenticacao-windows-em-uma-aplicacao.html