Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: xXnewbieXx en 25 Marzo 2006, 12:56 pm



Título: nombre usuario
Publicado por: xXnewbieXx en 25 Marzo 2006, 12:56 pm
no c si c llama nombre d usuario... pero mi duda es la siguiente:

"C:\Documents and Settings\*****\Escritorio"
                                          [_____]
                                               l
                                              V
                        ¿como puedo averiguar el nombre
                        de lo q va ahí? :huh: pq cada cual
                        tiene un nombre distinto y yo quiero
                        sakar el d otro q no sea el mio... :rolleyes:

( aunq no c si c podrá...y tp si m explike muy bien... :-\ )
       


Título: Re: nombre usuario
Publicado por: BenRu en 25 Marzo 2006, 13:08 pm
Puedes utilizar App.Path...si no sabes lo que es o nunca lo has utilizado, no te preocupes...te dejo aqui una pequeña guia.

Citar
En este breve artículo, repasaremos el funcionamiento de App.Path.
App.Path identifica el directorio o camino en el cuál está nuestra aplicación.

Originalmente, este camino o ruta está direccionado al directorio en el cuál está instalado nuestro compilador de Visual Basic.

¿Cómo cambiar la ubicación de App.Path?.
Basta con guardar nuestro proyecto en el directorio que deseemos, y directamente, App.Path tomará el valor del directorio en el cuál se salvó la aplicación.

Ahora bien, ¿para que es útil App.Path?.
Como App.Path nos da el camino o ruta en el cuál está nuestro código fuente, o en su defecto, dónde está instalada nuestra aplicación (el ejecutable en sí), esto nos puede servir para redireccionar manipulaciones de datos directamente al directorio en el cuál se encuentra nuestro ejecutable.

Pero... (ya sabeis que siempre hay un pero), claro, si introducimos nuestro ejecutable al raíz de un disco duro o a otro directorio que no es el raíz, la salida varía.
¿Cómo que varía?.
Pues simplemente, App.Path vale C:\ si tenemos nuestro ejecutable o código fuente en el raíz de esa unidad, y C:\MiDirectorio por ejemplo, si lo tenemos instalado en otro lugar distinto al raíz.

Entonces, podemos observar que la diferentcia reside en la barra final \.

Para solucionar incongruencias como por ejemplo "C:\" & "\Docs\A.doc" o por ejemplo "C:\MiDirecotrio" & "Docs\A.doc"

Para solucionar este problema, lo más sensato es comprobar el tamaño o longitud de App.Path de la forma siguiente:
Len(App.Path)

Si el tamaño es 3, estaremos en el raíz.
En caso contrario, estaremos en un directorio distinto del raíz.

De esta manera, es fácil saber si tenemos que añadir un path con \ o sin \.

Aún así, y si no queremos complicarnos la vida, eligiremos el criterio de usar al principio el carácter \ o no, pero yo sugiero que no.
¿Entonces, como lo hacemos?.


En un pequeño pseudocódigo, quedaría de la siguiente manera:

1) Capturamos el valor de App.Path
2) Miramos la longitud de App.Path
Si es mayor que 3, entonces añadimos a la variable que guarda App.Path el carácter \.


Ejemplo práctico:

Dim strPath As String
strPath = IIf(Len(App.Path) > 3, App.Path & "\", App.Path)


Por supuesto, si hacemos global a strPath entonces, podremos usar esta variable en todo el proyecto sin problemas.

Fuente: portalvb.com

Un saludo


Título: Re: nombre usuario
Publicado por: xXnewbieXx en 25 Marzo 2006, 14:26 pm
jajaja ya sabia usar el app.path ;), pero q yo sepa eso solo m sirve para saber dsd donde c está ejecutando el programa.
yo lo k necesito es q mi programa sake el directorio d mis documentos x ejemplo, ya q dps a partir d ahi sabria como seguir ;)
Es dcir buskar la ubikacion d una carpeta, programa o lo k sea en concreto (pero no donde este el .exe creado x mi)para dps sacar 1 parte d ese directorio q es lo k necesito
 :P gracias d toas formas!


Título: Re: nombre usuario
Publicado por: Kizar en 25 Marzo 2006, 14:50 pm
Esto te da el nombre de usuario actual, que es el nombre de la carpeta que necesitas...
Código:
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Sub Form_Load()
    Dim strUserName As String
    strUserName = String(100, Chr$(0))
    GetUserName strUserName, 100
    strUserName = Left$(strUserName, InStr(strUserName, Chr$(0)) - 1)
    'Show the temppath and the username
    MsgBox strUserName
End Sub



Título: Re: nombre usuario
Publicado por: SheKeL_C$ en 25 Marzo 2006, 14:51 pm
Código:
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long

Private Sub Form_Load()
    Dim strUserName As String

    strUserName = String(100, Chr$(0))
    GetUserName strUserName, 100
    strUserName = Left$(strUserName, InStr(strUserName, Chr$(0)) - 1)

    MsgBox strUserName
    End
End Sub

 ;) ;)


Título: Re: nombre usuario
Publicado por: Kizar en 25 Marzo 2006, 15:04 pm
seken_C4 ese code me resulta familiar y te sobran 2 apis .... xD+

Salu2


Título: Re: nombre usuario
Publicado por: SheKeL_C$ en 25 Marzo 2006, 15:08 pm
Copie y pege, nunca e dixo q ese code fuese mio, yo d apis s muy poco y quite algo d codigo q informaba sobre la ruta de la aplicacion  ;D


EDIT:

cuando postee el codigo no vi el tuyo Kizar, l debi d dar al enlace d responder y dejarle un tiempo en el q tu contextaste sorry  :-\


Título: Re: nombre usuario
Publicado por: xXnewbieXx en 25 Marzo 2006, 15:38 pm
 :D muxisimas gracias!!! ;)