Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: Klay 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 :)
-
¿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
-
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.
-
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} .
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
-
Sos un genio, mil gracias! Funciona perfecto.