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

Ayuda con Drag & Drop

Estas en el tema de Ayuda con Drag & Drop en el foro de Visual Basic clásico en Foros del Web. Hola Alguien sabe como puedo hacer un drag & drop de la siguiente forma: Arrastrar un Archvio de una carpeta o del escritorio hacia mi ...
  #1 (permalink)  
Antiguo 22/09/2005, 17:34
 
Fecha de Ingreso: abril-2005
Mensajes: 351
Antigüedad: 19 años
Puntos: 3
Ayuda con Drag & Drop

Hola Alguien sabe como puedo hacer un drag & drop de la siguiente forma:

Arrastrar un Archvio de una carpeta o del escritorio hacia mi aplicacion ("esta ya esta Ejecutandose") y al soltar el archivo mi aplicación muestre en un textbox (por Ej.) la ruta de este archivo.

Bien por las dudas Con "Command$" creo que no me servira ya que la aplicación repito se esta ejecutando.

creo que es algo dificil pero si alguien tiene alguna información Sera de gran utilidad
  #2 (permalink)  
Antiguo 23/09/2005, 12:00
 
Fecha de Ingreso: abril-2005
Mensajes: 351
Antigüedad: 19 años
Puntos: 3
ya encontre la solucion si alguien mas le interesa les dejo el ejemplo

Agreguen un list1 y un modulo

'En unFormulario:

Private Sub Form_Load()
'DragAcceptFiles permite registrar el drag de archivos, el segundo parametro
'lo habilita y False lo deshabilita
DragAcceptFiles hWnd, True ' get ready to accept files
lProcOld = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf FileDropHandler)
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Lo deshabilitamos
DragAcceptFiles hWnd, False
SetWindowLong hWnd, GWL_WNDPROC, lProcOld
End Sub



'En un Modulo
'-----------------------------------------------------

'El formulario que va a recibir los archivos arrastrados desde el explorador _
debe registrarse en el sistema mediante una llamada a DragAcceptFiles _
y ede esta menera poder habilitar el servicio de Drag
'Una vez registrado en el sistema, recibiremos el mensaje WM_DROPFILES cada _
vez que uno o varios archivos sean arrastrados desde el explorador de _
windows a nuestro formulario, por lo que debemos escribir el código _
necesario para su manejo
Public Declare Sub DragAcceptFiles Lib "shell32.dll" (ByVal hWnd As Long, ByVal fAccept As Long)
'la función DragQueryFile nos servirá _
para saber cuántos archivos están siendo arrastrados, el nombre de cada uno _
de ellos y el tamaño del buffer necesario para almacenar ese nombre
Private Declare Function DragQueryFile Lib "shell32.dll" Alias "DragQueryFileA" (ByVal hDrop As Long, ByVal UINT As Long, ByVal lpStr As String, ByVal ch As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Const WM_DROPFILES = &H233
Public Const GWL_WNDPROC = -4
Public lProcOld As Long
Public Function FileDropHandler(ByVal hWnd As Long, ByVal iMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim filename As String * 128
If iMsg = WM_DROPFILES Then
'Este bucle determina cuantos archivos se estàn arrastrando
Anzahl = DragQueryFile(wParam, -1, filename, 127)
For x = 1 To Anzahl
Nos de
'Esta llamada a dragqueryfile nos devuelve el nombre
DragQueryFile wParam, x - 1, filename, 127
'lo agregamos al List
Form1.List1.AddItem (filename)
Next x
Exit Function
End If

FileDropHandler = CallWindowProc(lProcOld, hWnd, iMsg, wParam, lParam)
End Function
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




La zona horaria es GMT -6. Ahora son las 07:02.