复制文件到剪辑板工具

易语言 2020-07-10 09:45:34

复制文件到剪辑板工具

.子程序 文件_复制到剪辑板, 逻辑型, 公开, 将指定文件复制到剪贴板,成功返回真,失败返回假。
.参数 文件名, 文本型, , 参数值为欲复制到剪贴板的文件名文本,如果复制多个文件,那么每个文件路径通过“#换行符”分隔(同拖放对象)。
.参数 状态, 逻辑型, 可空, 默认为假。真=剪切;假=复制
.局部变量 sTmp, 字节集
.局部变量 dfs, 剪贴板_置文件
.局部变量 hGlobal, 整数型
.局部变量 i, 整数型
.局部变量 ret, 整数型
.局部变量 lngFormat, 整数型
.局部变量 lpGlobal, 整数型
.局部变量 文件名组, 文本型, , "0"

文件名组 = 分割文本 (文件名, #换行符, )
.如果真 (OpenClipboard (0) = 0)
返回 (假)
.如果真结束
EmptyClipboard ()
.计次循环首 (取数组成员数 (文件名组), i)
sTmp = sTmp + 到字节集 (文件名组 [i]) + { 0 }
.计次循环尾 ()
sTmp = sTmp + { 0 }
hGlobal = GlobalAlloc (66, 20 + 字节集_取长度 (sTmp))
.如果真 (hGlobal = 0)
CloseClipboard ()
返回 (假)
.如果真结束
lpGlobal = GlobalLock (hGlobal)
dfs.pFiles = 20
RtlMoveMemory (lpGlobal, dfs, 20)
RtlMoveMemory_字节集 (lpGlobal + 20, sTmp, 字节集_取长度 (sTmp))
_解锁全局内存块 (hGlobal)
ret = SetClipboardData (15, hGlobal)
GlobalFree (hGlobal)
.如果真 (状态 且 ret > 0)
lngFormat = RegisterClipboardFormatA (“Preferred DropEffect”)
hGlobal = GlobalAlloc (66, 4)
RtlMoveMemory_整数型 (GlobalLock (hGlobal), 2, 4)
_解锁全局内存块 (hGlobal)
SetClipboardData (lngFormat, hGlobal)
GlobalFree (hGlobal)
.如果真结束
CloseClipboard ()
返回 (ret > 0)