mantener ruta local en ejecución distante
Publicado por suportgama (1 intervención) el 09/06/2009 15:05:18
Hola a todos
En primer lugar, no domino el VB, me defiendo y poco más, y desde hace varios días tengo un prolema al que no le encuentro solución
En mi equipo (A) tengo un acceso directo a una aplicación que está en un equipo remoto de la WAN (B) que es un menú de varias aplicaciones y donde se ejecuta en modo local. Esto lo hago mediante
-------
...
Private Sub entrabibliografica_Click()
Dim RetVal
RetVal = Shell("\AlejandriaBase de Datos\aplicacion2.exe", 1)
End Sub
...
-------
Esto ejecuta una aplicacion2 que se encuentra en el equipo remoto (B), con todas sus rutas a las bases de datos, etc...
El problema es que ésta aplicación en concreto la utilizo para escoger y subir ficheros desde mi máquina local (A) al distante (B).
Para ello adapté una aplicación que encontré en la web, ya os he dicho que no domino como para poder hacerlo solo.
Si esa aplicación la ejecuto desde mi máquina (A) va perfecta, me enseña mi disco duro (A) y me permite escoger las carpetas del distante (B), pero como está instalada en el equipo (B) no me presenta mi disco local (A) sino el (B), es decir me presenta las carpetas de salida del B y las destino (B).
El código que utilizo es
------------
Private Sub cmdCopy_Click()
Dim result As Long, fileop As SHFILEOPSTRUCT
With fileop
.hWnd = Me.hWnd
.wFunc = FO_COPY
.pFrom = Text1 & vbNullChar & vbNullChar
.pTo = txtDestination & vbNullChar & vbNullChar
.fFlags = FOF_SIMPLEPROGRESS Or FOF_FILESONLY
End With
result = SHFileOperation(fileop)
If result <> 0 Then
MsgBox Err.LastDllError
Else
If fileop.fAnyOperationsAborted <> 0 Then
MsgBox "Operation Failed"
End If
End If
End Sub
---------------
Public Function ExtractName(SpecIn As String) As String
Dim i As Integer
Dim SpecOut As String
On Error Resume Next
For i = Len(SpecIn) To 1 Step -1
If Mid(SpecIn, i, 1) = "" Then
SpecOut = Mid(SpecIn, i + 1)
Exit For
End If
Next i
ExtractName = SpecOut
End Function
---------
Private Sub cmdCopy2_Click()
CopytoClipboard_Click
Dim lstCount As Long
Dim lstIndex As Long
Dim Files() As String
Dim nRet As Long
Dim i As Long
Text1.Text = ""
lstCount = File1.ListCount - 1
lstIndex = 0
Do
nRet = clipPasteFiles(Files)
If nRet Then
If lstIndex = nRet Then Exit Sub
If lstIndex = nRet - 1 Then
End If
If lstIndex = nRet Then Exit Sub
Text3 = Val(lstIndex) + 1
If Val(lstIndex) = nRet Then Exit Sub
Text1 = Text1 & Files(lstIndex)
cmdCopy_Click
DoEvents
End If
lstIndex = lstIndex + 1
Text1.Text = ""
Loop Until lstIndex > lstCount
End Sub
-----------
Private Sub CopytoClipboard_Click()
Dim Files() As String
Dim Path As String
Dim i As Long, n As Long
Text1.Text = ""
Text2.Text = ""
' Make sure path has trailing backslash.
Path = Dir1.Path
If Right(Path, 1) <> "" Then
Path = Path & ""
End If
' Build array of files.
With File1
For i = 0 To .ListCount - 1
If .Selected(i) Then
ReDim Preserve Files(0 To n) As String
Files(n) = Path & .List(i)
n = n + 1
End If
Next i
End With
' Copy to clipboard.
If clipCopyFiles(Files) Then
Text2 = "Success... "
Else
Text2 = "failed..."
End If
End Sub
------------
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub
-------------
Private Sub Dir2_Change()
txtDestination.Text = Dir2.Path
End Sub
-------------
Private Sub Dir2_Click()
Dir2.Path = "\alejandriaBase de Datos"
End Sub
-----------
---------------------------------------
Como puedo hacer para que Dir1.Path me capture el equipo desde donde estoy lanzado la aplicación (A) ?
Muchas gracias y saludos cordiales
En primer lugar, no domino el VB, me defiendo y poco más, y desde hace varios días tengo un prolema al que no le encuentro solución
En mi equipo (A) tengo un acceso directo a una aplicación que está en un equipo remoto de la WAN (B) que es un menú de varias aplicaciones y donde se ejecuta en modo local. Esto lo hago mediante
-------
...
Private Sub entrabibliografica_Click()
Dim RetVal
RetVal = Shell("\AlejandriaBase de Datos\aplicacion2.exe", 1)
End Sub
...
-------
Esto ejecuta una aplicacion2 que se encuentra en el equipo remoto (B), con todas sus rutas a las bases de datos, etc...
El problema es que ésta aplicación en concreto la utilizo para escoger y subir ficheros desde mi máquina local (A) al distante (B).
Para ello adapté una aplicación que encontré en la web, ya os he dicho que no domino como para poder hacerlo solo.
Si esa aplicación la ejecuto desde mi máquina (A) va perfecta, me enseña mi disco duro (A) y me permite escoger las carpetas del distante (B), pero como está instalada en el equipo (B) no me presenta mi disco local (A) sino el (B), es decir me presenta las carpetas de salida del B y las destino (B).
El código que utilizo es
------------
Private Sub cmdCopy_Click()
Dim result As Long, fileop As SHFILEOPSTRUCT
With fileop
.hWnd = Me.hWnd
.wFunc = FO_COPY
.pFrom = Text1 & vbNullChar & vbNullChar
.pTo = txtDestination & vbNullChar & vbNullChar
.fFlags = FOF_SIMPLEPROGRESS Or FOF_FILESONLY
End With
result = SHFileOperation(fileop)
If result <> 0 Then
MsgBox Err.LastDllError
Else
If fileop.fAnyOperationsAborted <> 0 Then
MsgBox "Operation Failed"
End If
End If
End Sub
---------------
Public Function ExtractName(SpecIn As String) As String
Dim i As Integer
Dim SpecOut As String
On Error Resume Next
For i = Len(SpecIn) To 1 Step -1
If Mid(SpecIn, i, 1) = "" Then
SpecOut = Mid(SpecIn, i + 1)
Exit For
End If
Next i
ExtractName = SpecOut
End Function
---------
Private Sub cmdCopy2_Click()
CopytoClipboard_Click
Dim lstCount As Long
Dim lstIndex As Long
Dim Files() As String
Dim nRet As Long
Dim i As Long
Text1.Text = ""
lstCount = File1.ListCount - 1
lstIndex = 0
Do
nRet = clipPasteFiles(Files)
If nRet Then
If lstIndex = nRet Then Exit Sub
If lstIndex = nRet - 1 Then
End If
If lstIndex = nRet Then Exit Sub
Text3 = Val(lstIndex) + 1
If Val(lstIndex) = nRet Then Exit Sub
Text1 = Text1 & Files(lstIndex)
cmdCopy_Click
DoEvents
End If
lstIndex = lstIndex + 1
Text1.Text = ""
Loop Until lstIndex > lstCount
End Sub
-----------
Private Sub CopytoClipboard_Click()
Dim Files() As String
Dim Path As String
Dim i As Long, n As Long
Text1.Text = ""
Text2.Text = ""
' Make sure path has trailing backslash.
Path = Dir1.Path
If Right(Path, 1) <> "" Then
Path = Path & ""
End If
' Build array of files.
With File1
For i = 0 To .ListCount - 1
If .Selected(i) Then
ReDim Preserve Files(0 To n) As String
Files(n) = Path & .List(i)
n = n + 1
End If
Next i
End With
' Copy to clipboard.
If clipCopyFiles(Files) Then
Text2 = "Success... "
Else
Text2 = "failed..."
End If
End Sub
------------
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub
-------------
Private Sub Dir2_Change()
txtDestination.Text = Dir2.Path
End Sub
-------------
Private Sub Dir2_Click()
Dir2.Path = "\alejandriaBase de Datos"
End Sub
-----------
---------------------------------------
Como puedo hacer para que Dir1.Path me capture el equipo desde donde estoy lanzado la aplicación (A) ?
Muchas gracias y saludos cordiales
Valora esta pregunta


0