Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/09/2005, 12:00
LeandroA
 
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