WARNING: This is old thread. It is continued here.
Virtual clipboards+ by Learning one
- preserves clipboard
- can copy to and paste from virtual clipboard(s) - basic usage
- can do some extra stuff
- capable to support unlimited number of virtual clipboards, but limited to 30
- every task/command returns virtual clipboard's contents
- no globals
Nothing revolutionary, but handy IMO. If your goal is just to get selected text or file(s) in
Windows explorer, but preserve clipboard; you can use this shorty - gst().
License: public domain
Function:
VirClip(Task,ClipNum=1,Value="") ; by Learning one { static Clip1, Clip2, Clip3, Clip4, Clip5, Clip6, Clip7, Clip8, Clip9, Clip10, Clip11, Clip12, Clip13, Clip14, Clip15 , Clip16, Clip17, Clip18, Clip19, Clip20, Clip21, Clip22, Clip23, Clip24, Clip25, Clip26, Clip27, Clip28, Clip29, Clip30 if ClipNum not between 1 and 30 Return IsClipEmpty := (Clipboard = "") ? 1 : 0 if (task = "c" or task = "ca" or task = "x" or task = "xa" or task = "Copy" or task = "CopyAll" or task = "Cut" or task = "CutAll") { ClipboardBackup := ClipboardAll While !(Clipboard = "") { Clipboard = Sleep, 10 } if (task = "c" or task = "ca" or task = "Copy" or task = "CopyAll") Send, ^c Else Send, ^x if (task = "c" or task = "x" or task = "Copy" or task = "Cut") { ClipWait, 0.5 if !(Clipboard = "") Clip%ClipNum% := Clipboard } Else { ClipWait, 0.5, 1 if !(Clipboard = "") Clip%ClipNum% := ClipboardAll } Clipboard := ClipboardBackup if !IsClipEmpty ClipWait, 0.5, 1 Return Clip%ClipNum% } else if (task = "v" or task = "vt" or task = "Paste" or task = "PasteText") { if (Clip%ClipNum% = "") Return ClipboardBackup := ClipboardAll While !(Clipboard = "") { Clipboard = Sleep, 10 } Clipboard := Clip%ClipNum% ClipWait, 0.5, 1 Sleep, 40 if (task = "vt" or task = "PasteText") { Clipboard := Clipboard ClipWait, 0.5 Sleep, 30 } Send, ^v Sleep, 200 While !(Clipboard = "") { Clipboard = Sleep, 10 } Clipboard := ClipboardBackup if !IsClipEmpty ClipWait, 0.5, 1 Return Clip%ClipNum% } else if (task = "e" or task = "Empty") { Clip%ClipNum% = Return } else if (task = "ea" or task = "EmptyAll") { Loop, 30 Clip%A_Index% = Return } else if (task = "g" or task = "Get") Return Clip%ClipNum% else if (task = "s" or task = "Set") { Clip%ClipNum% := Value Return Clip%ClipNum% } else if (task = "a" or task = "Append") { Clip%ClipNum% .= Value Return Clip%ClipNum% } else if (task = "p" or task = "Prepend") { Clip%ClipNum% := Value Clip%ClipNum% Return Clip%ClipNum% } else if (task = "as" or task = "ps" or task = "AppendSelected" or task = "PrependSelected") { ClipboardBackup := ClipboardAll While !(Clipboard = "") { Clipboard = Sleep, 10 } Send, ^c ClipWait, 0.5 if !(Clipboard = "") { if (Clip%ClipNum% = "") Clip%ClipNum% := Clipboard Else { if (task = "as" or task = "AppendSelected") Clip%ClipNum% .= value Clipboard Else Clip%ClipNum% := Clipboard Value Clip%ClipNum% } } While !(Clipboard = "") { Clipboard = Sleep, 10 } Clipboard := ClipboardBackup if !IsClipEmpty ClipWait, 0.5, 1 Return Clip%ClipNum% } else if (task = "uc" or task = "UpperCase") { StringUpper, Clip%ClipNum%, Clip%ClipNum% Return Clip%ClipNum% } else if (task = "lc" or task = "LowerCase") { StringLower, Clip%ClipNum%, Clip%ClipNum% Return Clip%ClipNum% } else if (task = "tc" or task = "TitleCase") { StringUpper, Clip%ClipNum%, Clip%ClipNum%, T Return Clip%ClipNum% } } /* VirClip tasks: "c" or "Copy" ; copies just text. (Clipboard) "ca" or "CopyAll" ; copies all data; text, pictures, formatting. (ClipboardAll) "x" or "Cut" "xa" or "CutAll" "v" or "Paste" "vt" or "PasteText" ; pastes only text from virtual clipboard. "e" or "Empty" "ea" or "EmptyAll" "g" or "Get" "s" or "Set" "a" or "Append" "p" or "Prepend" "as" or "AppendSelected" ; Appends selected text, not pictures etc. "ps" or "PrependSelected" "uc" or "UpperCase" "lc" or "LowerCase" "tc" or "TitleCase" */ /* ; Example 1 - basic SelectedText := VirClip("c") ; this line: 1) copies selected text to virtual clipboard, 2) stores it in variable "SelectedText" and 3) preserves (original) clipboard. 4) It can also get full path of selected file(s) in Windows explorer. */ /* ; Example 2 - basic 1::VirClip("ca") ; copy selected to virtual clipboard. Copies all data; text, pictures, formatting. (ClipboardAll) 2::VirClip("v") ; paste all data from virtual clipboard. (Text, pictures, formatting) 3::VirClip("vt") ; paste just text from virtual clipboard. */ /* ; Example 3 - some sort of log 1::VirClip("as",4, "|") ; append selected text to virtual clipboard number 4. "|" serves as delimiter in this case (optional) 2::VirClip("v",4) ; paste from virtual clipboard number 4 */ /* ; Example 4 - some other features 1:: VirClip("s",3,"set text") ; set "set text" to virtual clipboard number 3 VirClip("a",3," appended text") ; append " appended text" to virtual clipboard number 3 VirClip("tc",3) ; convert text of virtual clipboard number 3 to title case VirClip("v",3) ; paste from virtual clipboard number 3 Return */
VirClip tasks:
VirClip tasks:
"c" or "Copy" ; copies just text. (Clipboard)
"ca" or "CopyAll" ; copies all data; text, pictures, formatting. (ClipboardAll)
"x" or "Cut"
"xa" or "CutAll"
"v" or "Paste"
"vt" or "PasteText" ; pastes only text from virtual clipboard.
"e" or "Empty"
"ea" or "EmptyAll"
"g" or "Get"
"s" or "Set"
"a" or "Append"
"p" or "Prepend"
"as" or "AppendSelected" ; Appends selected text, not pictures etc.
"ps" or "PrependSelected"
"uc" or "UpperCase"
"lc" or "LowerCase"
"tc" or "TitleCase"
Examples:
; Example 1 - basic SelectedText := VirClip("c") ; this line: 1) copies selected text to virtual clipboard, 2) stores it in variable "SelectedText" and 3) preserves (original) clipboard. 4) It can also get full path of selected file(s) in Windows explorer.
; Example 2 - basic 1::VirClip("ca") ; copy selected to virtual clipboard. Copies all data; text, pictures, formatting. (ClipboardAll) 2::VirClip("v") ; paste all data from virtual clipboard. (Text, pictures, formatting) 3::VirClip("vt") ; paste just text from virtual clipboard.
; Example 3 - some sort of log 1::VirClip("as",4, "|") ; append selected text to virtual clipboard number 4. "|" serves as delimiter in this case (optional) 2::VirClip("v",4) ; paste from virtual clipboard number 4
; Example 4 - some other features 1:: VirClip("s",3,"set text") ; set "set text" to virtual clipboard number 3 VirClip("a",3," appended text") ; append " appended text" to virtual clipboard number 3 VirClip("tc",3) ; convert text of virtual clipboard number 3 to title case VirClip("v",3) ; paste from virtual clipboard number 3 Return
Simple script:
#Include VirClip.ahk ; copy selected text, clear formating, preserve clipboard +F1::VirClip("c",1) +F2::VirClip("c",2) +F3::VirClip("c",3) ; paste F1::VirClip("v",1) F2::VirClip("v",2) F3::VirClip("v",3)