Как правильно отправить ссылку на файл в буфер обмена
В сети куча сайтов , которые предлагают один и тот же код. Который впрочем работает с ограничением.
Сам код:
Code
#Include Once "windows.bi"
#Include "win/shlobj.bi"
Function SetClipboardFile(sFile As String) As Integer export
If OpenClipboard(0) Then
Dim df As DROPFILES Ptr
Dim hGlobal As HGLOBAL
Dim iLen As Integer
sFile = sFile + Chr(0) + Chr(0)
iLen = Len(sFile)
hGlobal = GlobalAlloc(GMEM_SHARE+GMEM_MOVEABLE+GMEM_ZEROINIT, SizeOf(DROPFILES) + iLen)
If hGlobal<>0 Then
df = GlobalLock(hGlobal)
df->pFiles = SizeOf(DROPFILES)
MoveMemory(Cast(Byte Ptr,df) + SizeOf(DROPFILES), SAdd(sFile), iLen )
GlobalUnlock(hGlobal)
If SetClipboardData(CF_HDROP, hGlobal)Then
GlobalFree(hGlobal)
Function = TRUE
EndIf
EndIf
CloseClipboard()
EndIf
End Function
' Write the file path to the clipboard
If SetClipboardFile(ExePath & "\TEST.txt") Then
MessageBox(_
0,_
"Test is successful!",_
"",_
0 _
)
Else
MessageBox(_
0,_
"Error",_
"It is impossible to place the path to the clipboard",_
0 _
)
EndIf
Все вроде нормально файл в буфер обмена посылается. И даже копируется после этого в любую папку кроме той из которой идет копирование. То есть когда мы наводим курсор на файл , нажимаем копировать , потом вставить у нас появляется его копия в этой же папке. Однако код выше этого не умеет. В другие папки пожалуйста, но в эту никак. Кто знает решение, прошу подсказать.
Знаю что вопрос сложный, и наверное будет долго висеть, но кто знает.