Sample use is below. Be sure file(s) exist that are pasted.
If you build an array of type STRING, and then use the JOIN$ command like this:
Then passing buffer to the WriteToClipboard function will take care of the rest by appending 2 extra $NUL characters to the end.
If you build an array of type STRING, and then use the JOIN$ command like this:
Code:
LOCAL buffer AS STRING DIM FileList(1 TO 3) AS STRING FileList(1)="C:\TEST1.TXT" FileList(2)="C:\TEST2.TXT" FileList(3)="C:\TEST3.TXT" buffer = JOIN$(FileList(), $NUL)
Code:
#COMPILE EXE #DIM ALL #INCLUDE "WIN32API.INC" FUNCTION PBMAIN () AS LONG CALL WriteToClipboard("C:\TEST.TXT" + $NUL + "C:\ADAMTMP.TXT") END FUNCTION SUB WriteToClipboard(inBuf AS STRING) LOCAL df AS DROPFILES LOCAL tmp AS STRING * 20 LOCAL buf AS STRING LOCAL nLen AS LONG LOCAL nGblLen AS LONG LOCAL hGbl AS LONG LOCAL tmpInBuf AS STRING LOCAL lpGlobal AS LONG LOCAL szPtr AS ASCIIZ PTR tmpInBuf = inBuf + $NUL + $NUL df.pFiles = 20 df.fWide = 0 nLen = LEN(tmpInBuf) nGblLen = SIZEOF(df) + nLen hGbl = GlobalAlloc(%GHND, nGblLen) lpGlobal = GlobalLock(hGbl) CopyMemory lpGlobal, VARPTR(df), SIZEOF(df) CopyMemory lpGlobal + 20, BYVAL STRPTR(tmpInBuf), BYVAL LEN(tmpInBuf) GlobalUnLock hGbl IF OpenClipboard(0) THEN EmptyClipboard() SetClipboardData %CF_HDROP, hGbl CloseClipboard() END IF GlobalFree hGbl END SUB