Autor Tema: Ruta de carpeta actual  (Leído 2638 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Klay

  • Bytes
  • *
  • Mensajes: 26
  • Reputación: +0/-3
    • Ver Perfil
Ruta de carpeta actual
« en: Septiembre 23, 2013, 02:35:25 pm »
Hola, espero que esta vez me puedan ayudar :-\
No se si es posible lo que quiero. Necesito obtener la ruta de la carpeta que abrís, por ejemplo, vas al disco C y abris Windows, y te devuelve C:\Windows
Tengo la función para devolver el nombre de la carpeta actual, en el ejemplo anterior me devolvería Windows, y yo necesito la ruta entera.

Ojalá tengo solución, sin eso se me arruina todo el proyecto :S

Gracias de antemano :)

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Ruta de carpeta actual
« Respuesta #1 en: Septiembre 23, 2013, 02:49:35 pm »
¿Pero desde que control abres la ruta?¿Es la ruta del aplicativo? si es la ruta del aplicativo con App.Path & “\tuarchivo.exe” te devuelve la ruta completa incluida la unidad de disco. Si no es eso que control o con que estas accediendo a la carpeta o archivo?

Saludos
Me encuentras en YAcosta.com

Klay

  • Bytes
  • *
  • Mensajes: 26
  • Reputación: +0/-3
    • Ver Perfil
Re:Ruta de carpeta actual
« Respuesta #2 en: Septiembre 23, 2013, 02:53:56 pm »
Utilizo un FileListBox, en el cual se deben listar los archivos de la carpeta que se está abriendo actualmente.
No necesito la ruta del programa, sino la ruta de la carpeta que se está abriendo.
Debo usar File1.Path = "C:\", pero en vez de poner "C:\", tengo que cambiarlo por una variable que me devuelva la carpeta actual.

No estoy seguro de si es posible, pero antes que pensar una idea menos eficiente quería sacarme la duda.

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Ruta de carpeta actual
« Respuesta #3 en: Septiembre 23, 2013, 05:12:04 pm »
Hola, creo que entiendo tu intención, te paso una función pero hay un problema con la carpeta Mis Documentos y las que estén dentro, devuelve la ruta como un ID  ::{20D04FE0-3AEA-1069-A2D8-08002B30309D} .


Código: [Seleccionar]
Option Explicit
Private Declare Function GetForegroundWindow Lib "user32.dll" () As Long



Private Sub Form_Load()
    Timer1.Interval = 1000
End Sub


Private Function GetExplorerPath(ByVal hwnd As Long) As String
    On Error Resume Next
    Dim oShell As Object, oWin As Object
    Dim objSC As Object, sRet As String
   
    Set oShell = CreateObject("shell.application")
   
    If Not oShell Is Nothing Then
        For Each oWin In oShell.Windows
            If oWin.hwnd = hwnd Then
                GetExplorerPath = oShell.NameSpace(oWin.locationURL).Self.Path
                Exit For
            End If
        Next
        Set oShell = Nothing
    End If
End Function

Private Sub Timer1_Timer()
    On Error Resume Next
    Dim sPath As String
   
    sPath = GetExplorerPath(GetForegroundWindow)
    If Len(sPath) Then
        If File1.Path <> sPath Then
            Debug.Print sPath
            File1.Path = sPath
        End If
    End If
End Sub

Klay

  • Bytes
  • *
  • Mensajes: 26
  • Reputación: +0/-3
    • Ver Perfil
Re:Ruta de carpeta actual
« Respuesta #4 en: Septiembre 23, 2013, 11:51:22 pm »
Sos un genio, mil gracias! Funciona perfecto.