How to copy file to clipboard (from specific path) and paste?
Hello,
I'd appreciate your help.
I have some template files stored in specific paths, for instance:
C:\TEMPLATES\File.pdf
C:\TEMPLATES\File.docx
C:\TEMPLATES\File.png
I'm trying to build a start menu "TEMPLATE" in FastKeys like that:
Template PDF
Template DOCX
Template PNG
When clicking the menu item (e.g. "Template DOCX"), the script should:
(1) copy that specific file from the path (C:\TEMPLATES\File.docx) to the clipboard
(2) paste the full file (File.docx)
Does anyone know how to do that?
Thank you very much!
Carlos
I'd appreciate your help.
I have some template files stored in specific paths, for instance:
C:\TEMPLATES\File.pdf
C:\TEMPLATES\File.docx
C:\TEMPLATES\File.png
I'm trying to build a start menu "TEMPLATE" in FastKeys like that:
Template PDF
Template DOCX
Template PNG
When clicking the menu item (e.g. "Template DOCX"), the script should:
(1) copy that specific file from the path (C:\TEMPLATES\File.docx) to the clipboard
(2) paste the full file (File.docx)
Does anyone know how to do that?
Thank you very much!
Carlos
Regarding the main part of the scrip, which is "copy a file from a specified path", I tried - without success - to use the syntaxes available at the last page of this topic:
https://autohotkey.com/board/topic/2316 ... ard/page-4
Fastkeys is poping-up an error message.
Also, I'm wondering if I so complex syntax (from the topic above) is needed to just copy a file from a specified path.
Does anyone have further information on how to copy a file from a specified path?
Thank you!
https://autohotkey.com/board/topic/2316 ... ard/page-4
Fastkeys is poping-up an error message.
Also, I'm wondering if I so complex syntax (from the topic above) is needed to just copy a file from a specified path.
Does anyone have further information on how to copy a file from a specified path?
Thank you!
-
- Posts: 3
- Joined: May 20th, ’19, 15:04
thanks
Hi,
I'm still without finding out a solution.
I recorded a screencast detailing what I'm trying to implement in Fastkeys: http://bit.ly/2VQpFfi
Any direction?
Thank you very much!
Carlos
I'm still without finding out a solution.
I recorded a screencast detailing what I'm trying to implement in Fastkeys: http://bit.ly/2VQpFfi
Any direction?
Thank you very much!
Carlos
Hi Carlos, as you may have figured it out, this is not that easy. There are some functions available - could you try them with a new 4.19 version?
https://www.autohotkey.com/boards/viewt ... =6&t=64052
https://autohotkey.com/board/topic/2316 ... ard/page-4
https://www.autohotkey.com/boards/viewt ... =6&t=64052
https://autohotkey.com/board/topic/2316 ... ard/page-4
I made a shortcut with the command below and it works for me.
Code: Select all
FileToClipboard("H:\folder\file.png")
sleep 1000
send, ^v
return
FileToClipboard(PathToCopy,Method="copy")
{
FileCount:=0
PathLength:=0
; Count files and total string length
Loop,Parse,PathToCopy,`n,`r
{
FileCount++
PathLength+=StrLen(A_LoopField)
}
pid:=DllCall("GetCurrentProcessId","uint")
hwnd:=WinExist("ahk_pid " . pid)
; 0x42 = GMEM_MOVEABLE(0x2) | GMEM_ZEROINIT(0x40)
hPath := DllCall("GlobalAlloc","uint",0x42,"uint",20 + (PathLength + FileCount + 1) * 2,"UPtr")
pPath := DllCall("GlobalLock","UPtr",hPath)
NumPut(20,pPath+0),pPath += 16 ; DROPFILES.pFiles = offset of file list
NumPut(1,pPath+0),pPath += 4 ; fWide = 0 -->ANSI,fWide = 1 -->Unicode
Offset:=0
Loop,Parse,PathToCopy,`n,`r ; Rows are delimited by linefeeds (`r`n).
offset += StrPut(A_LoopField,pPath+offset,StrLen(A_LoopField)+1,"UTF-16") * 2
DllCall("GlobalUnlock","UPtr",hPath)
DllCall("OpenClipboard","UPtr",hwnd)
DllCall("EmptyClipboard")
DllCall("SetClipboardData","uint",0xF,"UPtr",hPath) ; 0xF = CF_HDROP
; Write Preferred DropEffect structure to clipboard to switch between copy/cut operations
; 0x42 = GMEM_MOVEABLE(0x2) | GMEM_ZEROINIT(0x40)
mem := DllCall("GlobalAlloc","uint",0x42,"uint",4,"UPtr")
str := DllCall("GlobalLock","UPtr",mem)
if (Method="copy")
DllCall("RtlFillMemory","UPtr",str,"uint",1,"UChar",0x05)
else if (Method="cut")
DllCall("RtlFillMemory","UPtr",str,"uint",1,"UChar",0x02)
else
{
DllCall("CloseClipboard")
return
}
DllCall("GlobalUnlock","UPtr",mem)
cfFormat := DllCall("RegisterClipboardFormat","Str","Preferred DropEffect")
DllCall("SetClipboardData","uint",cfFormat,"UPtr",mem)
DllCall("CloseClipboard")
return
}
Hi Marko,
The script works marvelously! Thank you!
IMO this is a very handy functionality.
I would suggest you add it as a drop-down start menu item type (snapshot below).
For instance, when "template" is selected, a field to add the file path would appear.
From the user side, it is necessary just to enter the file path, and the AHK command would work in the background (no need to the user edit the command directly).
Another possibility could be to approach "templates" more systematically, including it as a FastKeys module (snapshot below).
Best,
Carlos
TEMPLATE as start menu item type
TEMPLATE as Fastkeys module.
The script works marvelously! Thank you!
IMO this is a very handy functionality.
I would suggest you add it as a drop-down start menu item type (snapshot below).
For instance, when "template" is selected, a field to add the file path would appear.
From the user side, it is necessary just to enter the file path, and the AHK command would work in the background (no need to the user edit the command directly).
Another possibility could be to approach "templates" more systematically, including it as a FastKeys module (snapshot below).
Best,
Carlos
TEMPLATE as start menu item type
TEMPLATE as Fastkeys module.
What are the usage examples of such templates?
Think about having in a single place (FastKeys) all templates for every software you use.
In other words, think on Fastkeys as a hub for templates (Word, Excel, AHK script, etc.).
From the file explorer, just select through AHK start menu (snapshot below) the template you want and the file is pasted immediately, being ready to use.
Having the script now, I'm going to start building a TEMPLATE menu in FastKeys, and I update you when it is more evolved.