1

Тема: AHK: Как скопировать локальный файл в буфер обмена?

Подскажите как скопировать файл с жесткого диска в буфер с помощью скрипта AHK?

2 (изменено: teadrinker, 2021-03-23 05:15:46)

Re: AHK: Как скопировать локальный файл в буфер обмена?

Вот так можно:

PutFileIntoClipboard("D:\MyFile.ext")

PutFileIntoClipboard(fileList) {
   static GHND := 0x42, CF_HDROP := 0xF
   fileList := Trim( RegExReplace(fileList, "\R", "`n"), " `t`r`n" ), RegExReplace(fileList, "\R", "", count)
   VarSetCapacity(DROPFILES, size := 20 + StrLen(fileList) + count + 2, 0)
   NumPut(20, DROPFILES)
   prevLen := 0
   Loop, parse, fileList, `n
      prevLen += StrPut(A_LoopField, &DROPFILES + 20 + prevLen + A_Index - 1, StrLen(A_LoopField), "CP0")
   hMem := DllCall("GlobalAlloc", "UInt", GHND, "Ptr", size, "Ptr")
   pData := DllCall("GlobalLock", "Ptr", hMem, "Ptr")
   DllCall("RtlMoveMemory", "Ptr", pData, "Ptr", &DROPFILES, "Ptr", size)
   DllCall("GlobalUnlock", "Ptr", hMem)
   DllCall("OpenClipboard", "Ptr", 0)
   DllCall("SetClipboardData", "UInt", CF_HDROP, "Ptr", hMem)
   DllCall("CloseClipboard")
}

В качестве параметра функции может быть передан путь к одному либо пути к нескольким файлам, разделённые знаком переноса строки.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder