利用AHK脚本将鼠标划选内容自动复制到OB指定笔记

个人主要为了快速摘录,还有不少问题,水平有限,拼凑了半天只能做到这个效果,希望抛砖引玉,有愿意的能完善一下。使用时需注意以下问题(这些也是需要改进和完善的地方):

  1. 因为脚本是在后台自动检索当前粘贴板中的内容,只要剪贴板正在处理:Video_2021-11-27_180208.wmv…
    正在处理:Video_2021-11-27_180208.wmv…
    有内容就自动发到Obsidian的指定文件中,是无差别的复制粘贴;
  2. 发送到Obsidian时焦点会自动定位到Obsidian,为避免自动频繁切换窗口影响体验,最好使用Win+左、右键将源文件和Obsidian并列在屏幕的两边。
    3.可以增加快捷键来快速启动、抑制脚本运行,以避免不需要大量复制粘贴时对其它工作造成干扰

~LButton:: ;左键拖选文字: 复制
cos_mousedrag_treshold := 20 ; pixels
MouseGetPos, cos_mousedrag_x, cos_mousedrag_y
win1 := WinActive(“A”)
KeyWait LButton
MouseGetPos, cos_mousedrag_x2, cos_mousedrag_y2
win2 := WinActive(“A”)
WinGetClass cos_class, A
if(((abs(cos_mousedrag_x2 - cos_mousedrag_x) > cos_mousedrag_treshold
or abs(cos_mousedrag_y2 - cos_mousedrag_y) > cos_mousedrag_treshold)) and win1 = win2
and cos_class != “ConsoleWindowClass”)
{
;SendInput ^c
}

If errorlevel=0
GoSub, Routine
Return

Routine:
{
ifwinactive ahk_class CabinetWClass
{
return
}

clipboard =

send ,^c

ClipWait,1

StringLen, cliplen, clipboard
if cliplen > 0
{
;避免没有内容时还调用
;将复制的内容发送到指定程序中
;run obsidian://log
run obsidian://open?vault=IT&file=收集板
sleep 100
send ,^v
;send %clipboard%
send {enter}
clipboard =
cliplen =0
}
}
return

1 个赞

写代码建议用代码块语法,这样格式不会乱。