[已解决] AHK修改印象笔记格式,脚本不稳定

遇到了问题?请先进行搜索(中文和英文),然后在此提问

Moderators: tmplinshi, arcticir

pk23
Posts: 110
Joined: 24 Apr 2015, 00:49

[已解决] AHK修改印象笔记格式,脚本不稳定

24 Apr 2015, 01:34

印象笔记的后端是网页,所以我用ahk给印象笔记的编辑器,通过改html的方式,增加了几个快捷键。脚本片段如下:

Code: Select all

;实际上有十几个快捷键。为了简洁,只贴下alt+1的片段,其它几个快捷键类似,只是html那行不同
#IfWinActive ahk_class (ENSingleNoteView|ENMainFrame)   
    ;字体红色
    !1::    
    {
        Send ^c
        Sleep, 100
        t := WinClip.GetText()
        html = <span style="color: red;"><b>%t%</b></span>
        WinClip.Clear()
        WinClip.SetHTML(html)
        Send ^v
        Return
    }
但是,功能很不稳定,平均按5次热键,就有1次就失败。例如这个图中的例子(图太大,只放链接了):
http://ww4.sinaimg.cn/large/88e10423gw1 ... 0d20yw.gif
第5次按快捷键,「和尼尔的母亲」这6个字,就没成功改变字体颜色为蓝色,成功率5/6。这里是脚本全文,大家可以下载自己机器上测试下:
http://pan.baidu.com/s/1eQ8eCcM

请大家帮忙看看,代码怎么修改下,能再提高稳定性?如果是WinClip.ahk库,或者evernote编辑器的性能不够,那有什么变通的方法吗?这几个快捷键天天用,不稳定太痛苦了
Last edited by pk23 on 04 May 2015, 13:47, edited 1 time in total.
User avatar
RobertL
Posts: 546
Joined: 18 Jan 2014, 01:14
Location: China

Re: 【求助】AHK修改印象笔记格式,脚本不稳定

24 Apr 2015, 02:05

可能和电脑速度有关,程序反应慢...写回时,Send ^v前加延迟Sleep,时间凭经验。
另,Send ^c后可使用ClipWait替代,详见ClipWait手册说明。

这种通过剪切板传递并编辑html内容的方法大赞!谢谢分享,可以单开一贴了...
如果只有html=...一行不同,则,脚本可以极大的简化..
我为人人,人人为己?
pk23
Posts: 110
Joined: 24 Apr 2015, 00:49

Re: 【求助】AHK修改印象笔记格式,脚本不稳定

24 Apr 2015, 02:45

RobertL wrote:可能和电脑速度有关,程序反应慢...写回时,Send ^v前加延迟Sleep,时间凭经验。
另,Send ^c后可使用ClipWait替代,详见ClipWait手册说明。

这种通过剪切板传递并编辑html内容的方法大赞!谢谢分享,可以单开一贴了...
如果只有html=...一行不同,则,脚本可以极大的简化..
感谢R大!按照你说的修改了,初步测试,样式没粘贴上的情况消失了。不过^v后等100时,仍可能出现这种,回贴位置错误:
Image
现在调成400了,这几天再看看效果。 :D
tmplinshi
Posts: 1604
Joined: 01 Oct 2013, 14:57

Re: 【求助】AHK修改印象笔记格式,脚本不稳定

24 Apr 2015, 02:48

就用 ClipWait 等待复制成功(复制前先清空剪贴板)。

Code: Select all

#IfWinActive ahk_class (ENSingleNoteView|ENMainFrame)   
    ;字体红色
    !1::    
    {
        Clipboard := "" ; 清空剪贴板
        Send ^c
        ClipWait, 3 ; 等待复制成功(3 是最多等待3秒)
        ; t := WinClip.GetText()
        t := Clipboard ; 直接用 Clipboard 就行
        html = <span style="color: red;"><b>%t%</b></span>
        WinClip.Clear()
        WinClip.SetHTML(html)
        Send ^v
        Return
    }
pk23
Posts: 110
Joined: 24 Apr 2015, 00:49

Re: 【求助】AHK修改印象笔记格式,脚本不稳定

24 Apr 2015, 05:42

感谢tmplinshi和RobertL。改成函数,测试了一下午,比以前稳定多了,供大家参考:

Code: Select all

;背景色蓝色
#2::evernoteEdit("<span style='background:rgb(173, 216, 230);'>", "</span>")
;evernote编辑器增强函数
evernoteEdit(eFoward, eEnd)
{
	BlockInput On
	clipboard =
	Send ^c
	ClipWait, ,
	t := WinClip.GetText()
	html = %eFoward%%t%%eEnd%
	WinClip.Clear()
	WinClip.SetHTML(html)
	Sleep, 300
	Send ^v
	BlockInput Off
	Return
}
cixiplc
Posts: 8
Joined: 18 Oct 2014, 15:52

Re: [已解决] AHK修改印象笔记格式,脚本不稳定

05 Apr 2017, 16:00

; 代码开头添加
#ClipboardTimeout 2000


; 读取剪贴板前检测是否被占用
while DllCall("GetOpenClipboardWindow", "ptr") ; 返回打开剪贴板的那个窗口句柄
Sleep 100
pk23
Posts: 110
Joined: 24 Apr 2015, 00:49

Re: [已解决] AHK修改印象笔记格式,脚本不稳定

06 Apr 2017, 01:58

cixiplc wrote:; 代码开头添加
#ClipboardTimeout 2000


; 读取剪贴板前检测是否被占用
while DllCall("GetOpenClipboardWindow", "ptr") ; 返回打开剪贴板的那个窗口句柄
Sleep 100
谢谢朋友,这个问题已经解决。而且时隔多年,印象笔记改版,这个脚本也部分失效了
wwww777
Posts: 2
Joined: 21 Feb 2023, 22:04

Re: [已解决] AHK修改印象笔记格式,脚本不稳定

22 Feb 2023, 01:01

hi,您好,这么多年过去了,印象笔记的编辑功能还是比较差,不知道您还在用AHK吗?

Return to “请求帮助”

Who is online

Users browsing this forum: No registered users and 39 guests