Pues eso, me gustaria lanzar una busqueda de una palabra, me da = que los resultados salgan en el programa que en el programa de busqueda de windows.
PD: Lo que me interesa es la localización del arachivo
PD1: Es para un antivirus.
Gracias a todos.
A lo mejor te sirve esto:
Function PathTo(strFile As String) As String
Dim x As Integer
Dim strDirs As String
Dim strDir As String
Dim strEntry As String
'inicia la búsqueda en c:\
strDirs = "c:\" & vbNullChar
Do While Len(strDirs)
x = InStr(strDirs, vbNullChar)
strDir = Left$(strDirs, x - 1)
strDirs = Mid$(strDirs, x + 1)
'Comprueba si existe el archivo
If Len(Dir$(strDir & strFile)) Then
PathTo = strDir & Dir$(strDir & strFile)
Exit Function
End If
'Obtiene una carpeta o archivo contenido es strdir
strEntry = Dir$(strDir & "*.*", vbDirectory)
Do While Len(strEntry)
'si es una carpeta la asigna a strDirs para búscar dentro de ella
On Local Error Resume Next
If (GetAttr(strDir & strEntry) And vbDirectory) Then
If strEntry <> "." And strEntry <> ".." Then
strDirs = strDirs & strDir & strEntry & "\" & vbNullChar
End If
End If
If Err Then Exit Do
On Local Error GoTo 0
strEntry = Dir$
Loop
Loop
PathTo = ""
End Function
Pero... como? lo que quiero hacer es ponerlo en un Button
Se usa como php, creo que es asi
Function PathTo(strFile As String) As String
Dim x As Integer
Dim strDirs As String
Dim strDir As String
Dim strEntry As String
'inicia la búsqueda en c:\
strDirs = "c:\" & vbNullChar
Do While Len(strDirs)
x = InStr(strDirs, vbNullChar)
strDir = Left$(strDirs, x - 1)
strDirs = Mid$(strDirs, x + 1)
'Comprueba si existe el archivo
If Len(Dir$(strDir & strFile)) Then
PathTo = strDir & Dir$(strDir & strFile)
Exit Function
End If
'Obtiene una carpeta o archivo contenido es strdir
strEntry = Dir$(strDir & "*.*", vbDirectory)
Do While Len(strEntry)
'si es una carpeta la asigna a strDirs para búscar dentro de ella
On Local Error Resume Next
If (GetAttr(strDir & strEntry) And vbDirectory) Then
If strEntry <> "." And strEntry <> ".." Then
strDirs = strDirs & strDir & strEntry & "\" & vbNullChar
End If
End If
If Err Then Exit Do
On Local Error GoTo 0
strEntry = Dir$
Loop
Loop
PathTo = ""
End Function
Private Sub Command1_Click()
PathTo('archivoabuscar.exe')
End Sub
como?¿
PHP?
No es:
CitarPrivate Sub Command1_Click()
PathTo('archivoabuscar.exe')
End Sub
creo que es:
CitarPrivate Sub Command1_Click()
PathTo "archivoabuscar.exe"
End Sub
Cita de: dimitrix1 en 21 Enero 2007, 21:25 PM
como?¿
PHP?
No es:
CitarPrivate Sub Command1_Click()
PathTo('archivoabuscar.exe')
End Sub
creo que es:
CitarPrivate Sub Command1_Click()
PathTo "archivoabuscar.exe"
End Sub
es una función... por lo tanto es con ()
si fuese un procedimiento iría sin () ya que no devuelve un valor
ruta_devuelve=PathTo("archivoabuscar.exe")
Ok, gracias por la info, entonces sería
PathTo ("archivoabuscar.exe")
no
PathTo('archivoabuscar.exe')
Pero no me sale nada.
Cita de: dimitrix1 en 21 Enero 2007, 23:18 PM
Pero no me sale nada.
tienes que guardarlo en una variable porque devuelve un string...
en la cabecera te lo indica...
envias una cadena devuelve una cadena
Function PathTo(strFile As String) As String
sino te sale nada es porque o no encuentra el archivo o la función esta mal , no me la he mirado
CitarPathTo = ""
Mira si una funcion es asi:
Public Function Sumar(Num1 As Integer, Num2 As Integer) As Integer
Para llamar a esa funcion tenes que poner:
Call Sumar(5,8) 'Como tiene un "Call" antes los valores van entre ()
Ret = Sumar(5,8) 'Obtenes el resultado Ret, tons los parametros de Sumar van entre () A veces Ret es como control
Sumar 5,8 'Esta sin nada entonces los paramentro no necesitan ir entre ()
El valor devuelto de la suma es almacenado en Sumar entonces podes hacer esto:
Msgbox Sumar(5,8) 'Sale un msgbox con el resultado
Text1.text = Sumar(5,8) 'En un textbox se guarda el resultado
Ret = Sumar(5,8) 'Guardamos en Ret el valor
Msgbox Ret 'Hacemos un msgbox de Ret
PD: Al final de la funcion dice As Integer eso significa que el nombre de la funcion puede conterner el resultado para devolverlo, si no tiene alguna varialbe al final es porque en el procedimiento ese no se puede guardar ningun valor
Espero que te sirva de algo! Salu2
Sancho.Mazorka :P
Cita de: dimitrix1 en 21 Enero 2007, 23:18 PM
espero que pongas los nombres de quienes te pasan lo codigos por que en el autor solo veo dimitrix1 y asi como que lo programas tu no tanto solo pegas los codigos. ;D
Haber listo.
1º Como lo vas ha ver, si no lo he copilado?
2º Al final no voy a utilizar el codigo este, lo hare por sendkeys
vaya!! parece que la función "PathTo" se ha hecho muy popular, aparece en un monton de post, y a todo esto.....
Cita de: Red Mx en 22 Enero 2007, 22:03 PM
Cita de: dimitrix1 en 21 Enero 2007, 23:18 PM
espero que pongas los nombres de quienes te pasan lo codigos por que en el autor solo veo dimitrix1 y asi como que lo programas tu no tanto solo pegas los codigos. ;D
yo creo que ese código lo sacarón de la ayuda del visual (es casi igual), asi que no creo que haga falta citar a algún autor
Dim MiArchivo, MiRuta, MiNombre
' Devuelve "WIN.INI" si existe.
MiArchivo = Dir("C:\WINDOWS\WIN.INI")
' devuelve el nombre de archivo con la extensión especificada. Si hay más de un *.ini
' el archivo existe, devuelve el primer archivo que se encuentra.
MiArchivo = Dir("C:\WINDOWS\*.INI")
' Utiliza otra vez el comando Dir, sin argumentos, para devolver el
' siguiente archivo *.INI situado en el mismo directorio
MiArchivo = Dir
' Devuelve el primer archivo *.TXT que tenga el atributo de oculto.
MiArchivo = Dir("*.TXT", vbHidden)
' Muestra los nombres en C:\ que representan directorios.
MiRuta = "c:\" ' Establece la ruta.
MiNombre = Dir(MiRuta, vbDirectory) ' Recupera la primera entrada.
Do While MiNombre <> "" ' Inicia el bucle.
' Ignora el directorio actual y el que lo abarca.
If MiNombre <> "." And MiNombre <> ".." Then
' Realiza una comparación a nivel de bit para asegurarse de que MiNombre es un directorio.
If (GetAttr(MiRuta & MiNombre) And vbDirectory) = vbDirectory Then
Debug.Print MiNombre ' Muestra la entrada
End If ' solamente si representa un directorio.
End If
MiNombre = Dir ' Obtiene siguiente entrada.
Loop