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

sacar los nombres de archivo del clipboard

Estas en el tema de sacar los nombres de archivo del clipboard en el foro de Visual Basic clásico en Foros del Web. Hola alguien sabe como se podria sacar un listado de los nombres o rutas de los archivos que estan en el clipboard si es que ...
  #1 (permalink)  
Antiguo 04/10/2009, 04:26
Avatar de A.H.H  
Fecha de Ingreso: mayo-2007
Ubicación: IRUN,(GUIPUZCOA) España
Mensajes: 178
Antigüedad: 17 años
Puntos: 4
sacar los nombres de archivo del clipboard

Hola alguien sabe como se podria sacar un listado de los nombres o rutas de los archivos que estan en el clipboard si es que este los tuviese?
el texto y las imagenes pues ya se, pero quisiera la ruta de los archivos o los nombres.
gracias
  #2 (permalink)  
Antiguo 04/10/2009, 05:06
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: sacar los nombres de archivo del clipboard

He encontrado esto para sacar los ficheros del portapapeles en la página de microsoft y funciona bien.

http://support.microsoft.com/kb/231721

Os pongo la dirección, pero también incluyo el código por si desaparece de Micro$oft.

Para probarlo solo necesitais un form con un ListBox List1 y un Botón Command1:

Código :
Ver original
  1. Option Explicit
  2.  
  3. Private Const CF_HDROP = 15
  4.  
  5. Private Type POINT
  6.     x As Long
  7.     y As Long
  8. End Type
  9.  
  10. Private Type DROPFILES
  11.     pFiles As Long
  12.     pt As POINT
  13.     fNC As Long
  14.     fWide As Long
  15. End Type
  16.  
  17. Private Declare Function GlobalSize Lib "kernel32" _
  18.    (ByVal hMem As Long) As Long
  19. Private Declare Function GlobalLock Lib "kernel32" _
  20.    (ByVal hMem As Long) As Long
  21. Private Declare Function GlobalUnlock Lib "kernel32" _
  22.    (ByVal hMem As Long) As Long
  23.  
  24. Private Declare Function OpenClipboard Lib "user32" _
  25.    (ByVal hwnd As Long) As Long
  26. Private Declare Function CloseClipboard Lib "user32" () As Long
  27. Private Declare Function GetClipboardData Lib "user32" _
  28.    (ByVal wFormat As Long) As Long
  29.  
  30. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
  31.    (Destination As Any, Source As Any, ByVal Length As Long)
  32.  
  33. Private Sub ShowFilesOnClipboard()
  34.    Dim lHandle As Long
  35.    Dim lpResults As Long
  36.    Dim lRet As Long
  37.    Dim df As DROPFILES
  38.    Dim strDest As String
  39.    Dim lBufferSize As Long
  40.    Dim arBuffer() As Byte
  41.    Dim vNames As Variant
  42.    Dim i As Long
  43.  
  44.    If OpenClipboard(0) Then
  45.       lHandle = GetClipboardData(CF_HDROP)
  46.       ' If you don't find a CF_HDROP, you don't want to process anything
  47.       If lHandle > 0 Then
  48.          lpResults = GlobalLock(lHandle)
  49.          
  50.          lBufferSize = GlobalSize(lpResults)
  51.          ReDim arBuffer(0 To lBufferSize)
  52.          
  53.          CopyMemory df, ByVal lpResults, Len(df)
  54.          Call CopyMemory(arBuffer(0), ByVal lpResults + df.pFiles, _
  55.                          (lBufferSize - Len(df)))
  56.  
  57.          If df.fWide = 1 Then
  58.             ' it is wide chars--unicode
  59.             strDest = arBuffer
  60.          Else
  61.             strDest = StrConv(arBuffer, vbUnicode)
  62.          End If
  63.          GlobalUnlock lHandle
  64.          vNames = Split(strDest, vbNullChar)
  65.          i = 0
  66.          While Len(vNames(i)) > 0
  67.             List1.AddItem vNames(i)
  68.             i = i + 1
  69.          Wend
  70.       End If
  71.    End If
  72.    CloseClipboard
  73. End Sub
  74.  
  75. Private Sub Command1_Click()
  76.    Call ShowFilesOnClipboard
  77. End Sub

Un saludo.

Última edición por pkj; 04/10/2009 a las 05:30
  #3 (permalink)  
Antiguo 04/10/2009, 12:33
Avatar de A.H.H  
Fecha de Ingreso: mayo-2007
Ubicación: IRUN,(GUIPUZCOA) España
Mensajes: 178
Antigüedad: 17 años
Puntos: 4
De acuerdo Respuesta: sacar los nombres de archivo del clipboard

Muchisimas Gracias ' PKJ ' es justo lo que necesitaba y funciona a la perfección!

GRACIAS

Última edición por A.H.H; 04/10/2009 a las 15:57
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 18:29.