Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

command line en VB6 (línea de comandos)

Estas en el tema de command line en VB6 (línea de comandos) en el foro de Visual Basic clásico en Foros del Web. Hola... Soy nuevo en el foro pero tengo algo de experiencia en programación en VB6... Desconozco si aquí hay nivel suficiente para obtener respuesta o ...
  #1 (permalink)  
Antiguo 26/10/2006, 10:40
 
Fecha de Ingreso: octubre-2006
Mensajes: 1
Antigüedad: 17 años, 6 meses
Puntos: 0
command line en VB6 (línea de comandos)

Hola...

Soy nuevo en el foro pero tengo algo de experiencia en programación en VB6... Desconozco si aquí hay nivel suficiente para obtener respuesta o si la gente pone empeño en resolver las dudas para compartir conocimientos... Perdonadme pero es la primera vez que entro y participo.. Bueno.... Tengo la siguiente duda...

He relacionado una extensión de archivo (por ejemp. *.PAR) con mi aplicación.
Cuando hago click 2 veces a un archivo (*.PAR) se abre mi aplicación y con el siguiente ejemplo cojo el primer parámetro de la línea de comandos (aplicación.exe %1):

Dim mi_fichero As String

Private Sub Form_Load()
'En command se almacena el parámetro 1
mi_fichero = command
If mi_fichero <> "" then
Open mi_fichero for Input As #1
....
Close #1
End If
End Sub

Me gustaría abrir el fichero... pero qué ocurre... que aparece el path del directorio del fichero en version 8.3 (nombres cortos de menos de 8 caracteres). Y como el path del fichero es largo produce un error de lectura.

Por ejemplo:

c:\Documents and Settings\User\Escritorio\Nueva Carpeta\lolo.par

se convierte en:

c:\Documen~1\User\Escrit~1\Nueva ~1\lolo.par

o algo similar...

NO consigo obtener la dirección completa para nombres largos...

Alguien sabe qué hay que hacer... Puede que haya alguna solución con las funciones API. Pero desconozco si la hay.

Un saludo a todos.
Javichu
  #2 (permalink)  
Antiguo 26/10/2006, 15:18
Avatar de marcos1979  
Fecha de Ingreso: abril-2004
Ubicación: 62º 06' 18" O / 33º 07' 47" S
Mensajes: 331
Antigüedad: 20 años
Puntos: 1
Extraido de la web de "el Guille" http://www.elguille.info/

De nombre corto a largo:
Código:
Private Declare Function GetLongPathName Lib "kernel32" Alias "GetLongPathNameA" _
    (ByVal lpszShortPath As String, ByVal lpszLongPath As String, _
    ByVal cchBuffer As Long) As Long

    Dim sBuf As String * 260
    Dim i As Long
    i = GetLongPathName(Text2, sBuf, Len(sBuf))
    Text1 = Left$(sBuf, i)
De nombre largo a corto:
Código:
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" _
    (ByVal lpszLongPath As String, ByVal lpszShortPath As String, _
    ByVal cchBuffer As Long) As Long

    Dim sBuf As String * 260
    Dim i As Long
    i = GetShortPathName(Text1, sBuf, Len(sBuf))
    Text2 = Left$(sBuf, i)
Un saludo
__________________
Marcos

El dinero no da la felicidad... démelo y sea feliz!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 06:53.