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:
Code:
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, 20
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:Quote:
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:Code:
; 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.
Code:
; 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.
Code:
; 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
Code:
; 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:Code:
#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)