許多朋友經常摘錄一些網頁內容到其他地方,供查閱、編輯等,在這時,常常要復制兩次,一次是內容,接著一次是內容所在的網址。腳本比較簡單,只有一個熱鍵,當我們粘貼從網頁中復制的內容時,它會自動附加上網頁的地址。
腳本
最初我寫了這種功能的腳本,但一些方面處理不太好,下面這個腳本是 Lexikos 重寫的,比較完善,不影響其他復制粘貼操作。
原理是,從網頁復制內容時其中的內容實際上包含了來源,所以直接從中提取。
~^v::
; 最初靈感:http://ahk8.com/thread-4198.html
; 腳本來源(英文):http://www.autohotkey.com/board/topic/82393-auto-attach-its-url-when-copy-from-a-webpage/#entry525258
Sleep 100
CF_HTML := DllCall("RegisterClipboardFormat", "str", "HTML Format")
bin := ClipboardAll
n := 0
while format := NumGet(bin, n, "uint")
{
size := NumGet(bin, n + 4, "uint")
if (format = CF_HTML)
{
html := StrGet(&bin + n + 8, size, "UTF-8")
RegExMatch(html, "(*ANYCRLF)SourceURL:\K.*", sourceURL)
break
}
n += 8 + size
}
if !sourceURL
return
Clipboard := "`nSource: " sourceURL
Send ^v
Sleep 250
Clipboard := bin
return
使用時開啟腳本后與平常一樣復制, 然后使用 Ctrl + V 粘貼就行(鼠標粘貼無效)。
實際效果
我復制【其他】Copyheart、改版中的部分內容,如下:

復制網頁內容
粘貼到 Word 中后(因內容過寬,右邊部分被截除)

粘貼到 Word 中
可以看到在原內容后自動增加了文章的網址,以后復制網頁內容(包括從瀏覽器、CHM 文件等復制的情況)時開啟這個腳本就方便多了。
小結
可根據需要調整腳本,上面的腳本中沒有注釋,如果有興趣進一步了解原理,請參閱:
- CF_HTML 剪貼板格式的數據結構:HTML Clipboard Format
- 最初的實現思路及改進過程: 上面腳本中的來源鏈接