Тема: AHK: Добавить папку в буфер обмена.
Хочу в своем скрипте, копировать папку, но я так понял простым:
Clipboard
тут не обойтись.
Искал в интернете, может кто то делал уже, нашел 2 скрипта, но они для копирования файлов, но они как то не копируют:
вот 1ый
FileToClipboard("test.mkv")
FileToClipboard(PathToCopy)
{
; Expand to full paths:
Loop, Parse, PathToCopy, `n, `r
Loop, %A_LoopField%, 1
temp_list .= A_LoopFileLongPath "`n"
PathToCopy := SubStr(temp_list, 1, -1)
; Allocate some movable memory to put on the clipboard.
; This will hold a DROPFILES struct and a null-terminated list of
; null-terminated strings.
; 0x42 = GMEM_MOVEABLE(0x2) | GMEM_ZEROINIT(0x40)
hPath := DllCall("GlobalAlloc","uint",0x42,"uint",StrLen(PathToCopy)+22)
; Lock the moveable memory, retrieving a pointer to it.
pPath := DllCall("GlobalLock","uint",hPath)
NumPut(20, pPath+0) ; DROPFILES.pFiles = offset of file list
pPath += 20
; Copy the list of files into moveable memory.
Loop, Parse, PathToCopy, `n, `r
{
DllCall("lstrcpy","uint",pPath+0,"str",A_LoopField)
pPath += StrLen(A_LoopField)+1
}
; Unlock the moveable memory.
DllCall("GlobalUnlock","uint",hPath)
DllCall("OpenClipboard","uint",0)
; Empty the clipboard, otherwise SetClipboardData may fail.
DllCall("EmptyClipboard")
; Place the data on the clipboard. CF_HDROP=0xF
DllCall("SetClipboardData","uint",0xF,"uint",hPath)
DllCall("CloseClipboard")
}
Второй:
F12::
list := ""
path := Explorer_GetPath()
Loop, Files, %path%\*.*
{
SplitPath, A_LoopFileName , , , , OutNameNoExt
list .= OutNameNoExt "`n"
}
Clipboard := list
return
Explorer_GetPath() {
WinGetClass, winClass, % "ahk_id" . hWnd := WinExist("A")
if !(winClass ~= "(Cabinet|Explore)WClass")
Return
for window in ComObjCreate("Shell.Application").Windows
if (hWnd = window.hWnd)
return window.Document.Folder.Self.Path
}
Возможно ли в AHK копировать папку в буфер обмена?