Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Работа с содержимым буфера обмена Добавлено: 11.06.09 16:56  

Автор вопроса:  AlexCage
Пользователь выбирает в папке файлы и копирует в буфер, затем запускает процедуру, которая берет файлы указанные в буфере, переносит в заданную папку. Возможно ли реализовать даную задачу, подскажите где поискать инфу, плз?

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #1
Добавлено: 11.06.09 17:29
  1. Clipboard.GetData

Суй в массив стрингов, только тип данных не запуть указать (vbFileList что ли, не помню)))

Ответить

Номер ответа: 2
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #2 Добавлено: 11.06.09 18:38
А наоборот как?
Есть пример "копирования" файлов в буфер обмена?

Ответить

Номер ответа: 3
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #3
Добавлено: 11.06.09 20:51
  1.  
  2. Clipboard.SetData


Суешь вроде как в массив, массив копируешь с той же константой (или в коллекцию, не помню точно :))

Ответить

Номер ответа: 4
Автор ответа:
 AlexCage



Вопросов: 1
Ответов: 2
 Профиль | | #4 Добавлено: 13.06.09 02:37
VβÐ Uηit, пасиб за ответ. Короче вот чего получается.

  1.  
  2. Public Type POINTAPI
  3. x As Long
  4. y As Long
  5. End Type
  6.  
  7. ...
  8. ' Функции API
  9. Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
  10. Public Declare Function CloseClipboard Lib "user32" () As Long
  11. Public Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long)
  12. Public Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Long) As Long
  13. Public 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
  14. ...
  15.  
  16. ' Константы форматов буфера
  17. Public Const CF_HDROP As Long = 15
  18. ...
  19.  
  20. Private Function TrimNull(ByVal sTmp As String) As String
  21. Dim nNul As Long
  22. 'Отрезает первый нуль.
  23. nNul = InStr(sTmp, vbNullChar)
  24. Select Case nNul
  25.     Case Is > 1
  26.         TrimNull = Left(sTmp, nNul - 1)
  27.     Case 1
  28.         TrimNull = ""
  29.     Case 0
  30.         TrimNull = Trim(sTmp)
  31. End Select
  32. End Function
  33.  
  34. ...
  35. Sub PasteFilesFromClipboard()
  36. Dim hDrop As Long
  37. Dim nFiles As Long
  38. Dim i As Long
  39. Dim desc As String
  40. Dim filename As String
  41. Dim pt As POINTAPI
  42. Const MAX_PATH As Long = 260
  43. Dim sFiles() As String
  44.  
  45. ' Проверяем формат и открываем буфер
  46. If IsClipboardFormatAvailable(CF_HDROP) Then
  47.     If OpenClipboard(0&) Then
  48.         ' Передаем указатель.
  49.         hDrop = GetClipboardData(CF_HDROP) '<------- Выдает Run time error 49
  50.         nFiles = DragQueryFile(hDrop, -1&, "", 0)
  51.         
  52.         ' Резервируем память под переменные.
  53.         ReDim sFiles(0 To nFiles - 1) As String
  54.         filename = Space(MAX_PATH)
  55.         
  56.         ' Получаем имена файлов.
  57.         For i = 0 To nFiles - 1
  58.             Call DragQueryFile(hDrop, i, filename, Len(filename))
  59.             sFiles(i) = TrimNull(filename)
  60.             MsgBox sFiles(i)
  61.         Next
  62.         
  63.         ' Закрываем буфер
  64.         Call CloseClipboard
  65.     End If
  66.     ...
  67.     
  68. End If
  69. End Sub


Плз, подскажите из-за чего может вылезать данная ошибка?

Ответить

Номер ответа: 5
Автор ответа:
 AlexCage



Вопросов: 1
Ответов: 2
 Профиль | | #5 Добавлено: 14.06.09 21:52
Вопрос снят, все работает. Не поставил As Long при декларировании GetClipboardData =)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам