Ver Mensaje Individual
  #6 (permalink)  
Antiguo 15/06/2006, 07:35
elchicho_88
 
Fecha de Ingreso: junio-2006
Mensajes: 1
Antigüedad: 17 años, 10 meses
Puntos: 0
Haciar un archivo a nuestra aplicacion y poder abrirlo

lo que tenes que hacer para que el programa abra tu archivo es usar la instruccion Command(), esta te devuelve la ruta del archivo que queres abrir, por ejemplo si vos queres ejecturar el bloc de notas desde INICIO -> EJECTUAR y que te abra directamente un archivo, escribis "c:\windows\notepad.exe c:\pirulo.txt" (Sin las comillas) el programa recive la ruta "c:\pirulo.exe".


La instruccion seria

Private Sub Form_Load()
' Declaramos la variable
Dim Archivo As String

'comprobamos que el valor de la cadena no sea 0
If Not Command = vbNullString Then

'Devuelve la informacion si espacios iniciales o finales
Archivo = Trim(Command)

'Eliminamos las comillas
If InStr(1, Archivo, Chr(34)) <> 0 Then
Archivo = Mid(Archivo, 2, Len(Archivo) - 2)
End If

Text1.Text = Archivo

End If

Despues con esa ruta podes hacer lo que quieras (eliminar el archivo, abrirlo en un TextBox, Ocultarlo, etc.)

'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''
y para asociarlo usas este codigo en un modulo .bas:



Option Explicit
'Demostración de cómo registrar un extensión y añadir opciones
'al menú que aparece al pulsar el botón derecho sobre un
'archivo de dicha extensión en el explorador.
'Extraído del programa Cut-It del Guille y levemente adaptado

'Claves del Registro
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
'
'Para los valores devueltos por las funciones de manejo del Registro
Private Const ERROR_SUCCESS = 0&
Private Const ERROR_NO_MORE_ITEMS = 259&
'
' Tipos de datos Reg...
Private Const REG_SZ = 1 ' Cadena Unicode terminada en valor nulo
'
'Declaraciones del API de Windows para 32 bits
'
Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long) As Long
Declare Function RegEnumKey Lib "advapi32" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal iSubKey As Long, ByVal lpszName As String, ByVal cchName As Long) As Long
Declare Function RegOpenKey Lib "advapi32" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpszSubKey As String, phkResult As Long) As Long
Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long


Private Function QueryRegBase(ByVal Entry As String, Optional vKey) As String
'Busca una entrada en el registro
Dim buf As String
Dim buflen As Long
Dim hKey As Long

If IsMissing(vKey) Then
hKey = HKEY_CLASSES_ROOT
Else
hKey = CLng(vKey)
End If

On Local Error Resume Next
buf = Space$(300)
buflen = Len(buf)
'Buscar la entrada especificada y devolver el valor asignado
If RegQueryValue(hKey, Entry, buf, buflen) = 0 Then
If buflen > 1 Then
'El formato devuelto es ASCIIZ, así que quitar el último caracter
QueryRegBase = Left$(buf, buflen - 1)
Else
QueryRegBase = ""
End If
Else
QueryRegBase = ""
End If
On Local Error GoTo 0
End Function


Private Sub Asociar_Extension(fExt As String, sProgId As String, sExe As String, Optional sDescrip)
'Función para asociar una extensión a un programa
'Se le pasan la extensión, un identificador del programa,el camino completo
'al ejecutable y ,opcionalmente, la breve descripción que saldrá en el explorador
' como "Tipo". Por ejemplo, un documento de word aparece como "Microsoft Word (Documento)".
'Si pasamos esta descripción nos aparecerá el valor de sProgId y la descripción entre
'paréntesis. Si no pasamos este parámetro nos quedará "Archivo de " y el valor de sProgId
'
'Ejemplo de llamada :
'Asociar_Extension ".ppp", "Mi Programa",LCase$(App.Path & "\" & App.EXEName & ".exe "), "Documento"
'
Dim sDef As String
Dim hKey As Long
Dim phkResult As Long
Dim lRet As Long
Dim sValue As String
Dim sKey As String

'Registrar la extensión y asociarla a nuestro programa
sKey = fExt
sValue = sProgId
lRet = RegSetValue(HKEY_CLASSES_ROOT, sKey, REG_SZ, sValue, Len(sValue))
'
sKey = sProgId
If IsMissing(sDescr) Then
sValue = "Archivo de " + sProgId
Else
sValue = sProgId + " (" + sDescr + ")"
End If
lRet = RegSetValue(HKEY_CLASSES_ROOT, sKey, REG_SZ, sValue, Len(sValue))

sProgId = QueryRegBase(fExt)
If Len(sProgId) Then
'establecer las opciones para el menú del botón derecho sobre el archivo

'Nombre de la clave para esta extensión
sDef = "Software\Classes\" & sProgId & "\shell"
'usar HKEY_LOCAL_MACHINE, ya que HKEY_CLASSES_ROOT es una copia de: HKEY_LOCAL_MACHINE\Software\Classes
hKey = HKEY_LOCAL_MACHINE
'Crear la clave del registro, si ya existe, simplemente la abre.
'Nota: Esta función permite crear varios niveles
lRet = RegCreateKey(hKey, sDef, phkResult)
If lRet = ERROR_SUCCESS Then
'Si no hay error, la clave está creada y/o abierta
'
'añadimos la opción editar que llamará al notepad
sKey = "Editar"
sValue = "&Editar"
lRet = RegSetValue(phkResult, sKey, REG_SZ, sValue, Len(sValue))
'
sKey = "Editar\command"
sValue = "C:\Windows\Notepad.exe " & Chr$(34) & "%1" & Chr$(34)
lRet = RegSetValue(phkResult, sKey, REG_SZ, sValue, Len(sValue))
'
'opción por defecto, la que sale en negrita (doble click)
sKey = sProgId
sValue = "&Mi opción por defecto"
lRet = RegSetValue(phkResult, sKey, REG_SZ, sValue, Len(sValue))
'
sKey = sProgId & "\command"
sValue = sExe & Chr$(34) & "%1" & Chr$(34)
lRet = RegSetValue(phkResult, sKey, REG_SZ, sValue, Len(sValue))
'
'Abrir (open)
sKey = "\open\command"
sValue = sExe & Chr$(34) & "%1" & Chr$(34)
'Si no se especifica sKey, se asigna a la clave abierta
lRet = RegSetValue(phkResult, sKey, REG_SZ, sValue, Len(sValue))

'Poner este prograna por defecto (asignarlo a Shell)
sKey = ""
sValue = sProgId
'Si no se especifica sKey, se asigna a la clave abierta
lRet = RegSetValue(phkResult, sKey, REG_SZ, sValue, Len(sValue))
'
'Cerrar la clave abierta
lRet = RegCloseKey(phkResult)
End If
End If
End Sub



Cualquier duda sobre el tema o cualquier otra escribanme a [email protected]