Visual Basic - Error en Obtencion de Usuario Windows en Visual Basic 2013

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Error en Obtencion de Usuario Windows en Visual Basic 2013

Publicado por John (4 intervenciones) el 22/06/2014 17:00:40
Hola,

Muy Buenos Dias: Gracias por Aceptarme en Este Foro.. e vistos Temas Realmente interesantes que se han solucionado y los felicito. les cuento:

Soy un autodidacta con experiencia en Accces, pues ahora quiero implementar esas mini aplicaciones de manera Profesional a través de Visual basic 2013. El problema que tengo es el siguiente :

Dentro de un formulario, tengo un boton que al hacer click haría llamado al codigo :
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 
        ' Dimension variables
        Dim lpBuff As String = 25
        Dim ret As Long, UserName As String
 
        ' Get the user name minus any trailing spaces found in the name.
        ret = GetUserName(lpBuff, 25)
        UserName = Strings.Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
 
        ' Display the User Name
        MsgBox(UserName)
    End Sub

dependiente de la Siguiente Funcion:

1
2
3
4
Module ConoceUsario
    Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
       (ByVal lpBuffer As String, nSize As Long) As Long
End Module

pero este me arroja un error

No se controló System.AccessViolationException
HResult=-2147467261
Message=Intento de leer o escribir en la memoria protegida. A menudo, esto indica que hay otra memoria dañada.
Source=Modulo_Tarifados


Resaltando dentro del Editor la siguiente Linea:

ret = GetUserName(lpBuff, 25)

Ya no se que hacer, Vuestra Ayuda con sus sugerencias y comentarios..

de antemano muy agradecido.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Error en Obtencion de Usuario Windows en Visual Basic 2013

Publicado por Pico (114 intervenciones) el 22/06/2014 17:34:18
Te ha fallado el copy&paste.

Dim lpBuff As String = 25
Eso debe hacer que lpBuff valga 25, cuando lo que quieres es que mida 25, si no no cabe el nombre. Si vale 25 mide 2, así que un nombre de usuario no suele caber.

Lo que quieres es lpBuff as String * 25.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error en Obtencion de Usuario Windows en Visual Basic 2013

Publicado por John (4 intervenciones) el 22/06/2014 18:07:12
Muchas Gracias,
Pero al Colacar la Variable de esta Manera:

Dim lpBuff As String * 25


me dice que se esperaba el fin de la Instrucción. ( lpBuff no esta declarado, puede que este inaccesible debido a su nivel de protección )

muchas Gracias Nuevamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error en Obtencion de Usuario Windows en Visual Basic 2013

Publicado por Pico (114 intervenciones) el 22/06/2014 18:17:14
http://www.tek-tips.com/faqs.cfm?fid=429

El nombre de usuario también lo tienes en Me.User.Name o algo así.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error en Obtencion de Usuario Windows en Visual Basic 2013

Publicado por John (4 intervenciones) el 22/06/2014 18:49:24
Gracias,

La Solucion Fue Esta:

Nombre del Control.text=Environ("USERNAME").


Pero de Igual Manera busco la Otra Opcion... creo que el Problema se debe a Como Saber declarar la variable de Longitud fija, pues lo e intentado Asi:

Dim lpBuff As String
lpBuff = "lpBuff is now 30 characters long"

pero me aarroja el siguiente error:

o se controló System.AccessViolationException
HResult=-2147467261
Message=Intento de leer o escribir en la memoria protegida. A menudo, esto indica que hay otra memoria dañada.
Source=Modulo_Tarifados
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error en Obtencion de Usuario Windows en Visual Basic 2013

Publicado por Pico (114 intervenciones) el 22/06/2014 19:26:02
Ya estamos con lo de siempre. Se hace como te he dicho. Otro ejemplo con otra función http://www.vbforums.com/showthread.php?255588-getwindowtext

lpBuff tiene que ser un lp, que si nunca has programado para windows igual no te suena, pero a mí sí me suena. Un lpBuffer tiene que ser un LPSTR, que es un puntero a un STR. Si pones lpBuff = "lpBuff is now 30 characters long" lpBuff no es un LPSTR, es un BSTR, y no puedes pasarle un BSTR a una función que pide un LPSTR. Por lo que he visto en ejemplos, yo, gracias a dios, nunca he programado nada en vb, en vb un puntero a un STR, un LPSTR, de declara tal que Dim lpBuff As String * 25. Eso es un LPSTR, lo que tienes que pasarle a GetUserNameA, en vb.

Si eso te da error al compilar mira a ver bien qué has puesto.

Si te da error al ejecutar puede ser también que el nombre de usuario no cabe en el bufer que has reservado. Has reservado 25 caracteres, al que habrá que restar el 0 o el número de caracteres, una de dos, con lo que te da para un nombre de 24 caracteres.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar