Oeasy 发表于 2015-8-6 08:26:45

GoldenDict+Autohotkey-> 高亮即取词[Windows]

本帖最后由 Oeasy 于 2018-2-21 22:57 编辑


参考:
- GoldenDict 专贴! https://pdawiki.com/forum/thread-11705-1-1.html
- GoldenDict 中文用户手册 http://www.jianshu.com/p/15dcd19ec8be {帐号已经被封禁}
- https://dictionaryphile.github.io/

-2016-05-09-
推荐这个 ahk
ZZ http://weibo.com/1928931362/Dcdvnphx7
GoldenDict 划译&点译插件 v0.9https://0paste.com/8133
原帖标题是“GoldenDict+Autohotkey->Chrome 下高亮即取词”,事实上,用上面的 ahk,任何程序下(Word、Acrobat 等),只要高亮(划)文字,就可以调出 GoldenDict 取词窗口(当然,前提是 GoldenDict 运行着)。
而且这个 ahk 另有妙用,如果是点译,取词窗口里有带发音的词典且 GoldenDict 设置为自动发音,那只要取词窗口存在着,就有可能不停地**重复发音(额,其实就是不停地在取同一个词)。{:4_104:}
static/image/hrline/2.gif
-obsolete-
zz
http://wlhunag.blogspot.com/2012/06/goldendict.html 感谢此文作者。

GoldenDict Win7 Chrome的螢幕取詞功能
By 黃文龍 |下午10:57 |GoldenDict |No comments
前個禮拜在Linux Mint 13裡面用Git 自行編譯 GoldenDict , 發現啟用"螢幕取詞"功能時,可以在Google Chrome裡面點兩下想查詢的英文字,然後就會自動跳出彈出式視窗。
但是在Win 7, 64 bit 裡面編譯最新的原始碼時,卻沒有這個功能。

後來用了Autohotkey 以後,發現有辦法~
只要在Autohotkey 裡面增加一段腳本即可。(當然程式碼倒數第三行要改成你Goldendict 安裝路徑。)

~LButton::

Loop {
LButtonDown := GetKeyState("LButton","P")
If (!LButtonDown)
   Break
}

WaitTime:=DllCall("GetDoubleClickTime")/4000
KeyWait, LButton, D T%WaitTime%
If errorlevel=0
   GoSub, Routine
Return



Routine:
{

ifwinactive ahk_class CabinetWClass
{
return
}

clipboard =
send ,^c
ClipWait,1

StringLen, cliplen, clipboard
if cliplen > 20
{
;避免不是英文單字的東西送到GoldenDict去翻譯。

return
}

if cliplen < 2
{   
;避免不是英文單字的東西送到GoldenDict去翻譯。

return
}


; send,{Ctrl down}cc{Ctrl up} 可用這行,也可用下行

run D:\XXXX(GD所在路徑)\GoldenDict\GoldenDict.exe%clipboard%

}
return
這樣就能點兩下英文字就自動翻譯了~

其實不只Chrome, 只要能夠複製文字的所有程式,都可以使用~




--
测试结果 by Oeasy 2015年8月6日 08:16:38
Chrome 下只需要双击**单词高亮之,就蹦出 GoldenDict 取词窗口。当然,也可以用传统方式,鼠标高亮,按 Ctrl + C + C (取汉语词汇,也只能这样子了)。
https://www.pdawiki.com/forum/data/attachment/album/201508/06/082252kkanbi9n3ir1u3if.png


clliangju 发表于 2015-9-17 16:52:19

你好,请问,autohot, 建立了一个ahk文件,直接复制代码,只改动最后的一行吗,怎么不行呀,复制粘贴代码后是这样的,请问是什么问题,对电脑程序不懂,多谢了
~LButton::# K6 Kh8 ^9 _
% Q% U% [; Y1 w. o. u6 [; W2 ~[
Loop {
& _! t% f' S, Q; k7 N1 F; B% X; _' E) dLButtonDown :=

GetKeyState("LButton","P")
& r6 [6 u- @* ~) T2 k) `If (!LButtonDown)1 m% p/ L& T' v1 d5 U" z: |
   Break
7 S2 _/ SF& E#

H- T+ C}; g+ E- b~# \7 r2 G. y; k" [! O

4 Z1 l2 W3 `. O& P, c! P" TWaitTime:=DllCall("GetDoubleClickTime")/4000- ?9 ^1

E, [# }4 Q/ x5 O
KeyWait, LButton, D T%WaitTime%
7 V% X2 Y+ @7 m7 cIf errorlevel=03 S& M5 `8 f4 I& R4 }' Tp1 z7 B
   GoSub,

Routine' s3 H( i0 y" V; P* u! B
Return" v8 W2 k& O( `. h6 b% i( P" s) I
3 j. `: B, X8 T' n8 G! d) T$ |m. d
! p% rR6 s& M'

N, `/ d1 d1 o3 v% G
) i" [# k) ?* S3 T, k7 _
Routine:
" `- f% l+ v6 ]$ ^{! D# v& L6 I$ A, U8 o3 G
$ ?' p8 N" K1 }- v9 z& X' {1

O& _
ifwinactive ahk_class CabinetWClass+ A! U9 G0 m7 v6 R3 x8 ?, H
{8 I% _( c; u* _/ e8 B8 `9 F
return
* [& |+ x( U5 x; w:

t! C( k: f }* m, f8 C. @+ m% \
/ F" X( ], P|- M6 @
clipboard =
7 I- P/ j& T; l3 U- a; t send ,^c
% T3 w, ^( H7 f2 Y* }+ B+

i ClipWait,1$ R( \1 D5 ?% I; G# V

' J' {% H; kB2 X- F; j StringLen, cliplen, clipboard$ H! I4 ^2 I# y
if cliplen > 20+ W,

K/ n, W; l2 C$ d! W3 }
{ , c0 [# ~9 C5 B8 A6 q
;
5 d1 W: L+ N, x4 w) F9 A, C3 O& Kl# D/ G
return
/ X5 F& }0 w5 B# D}% c:

b2 x# L5 Q7 a; ~
4 V: ]0 m- u7 z$ R@0 `1 V/ E, ^
if cliplen < 24 ~; ~. u3 d; p
{   " d" I. F7 ^/ T& c! _' Y. u
;
, W8 q!

@1 `" o/ W& j
2 z" V) x" J$ w return, Z/ p/ s6 T- F5 Q0 n; R9 l4 t8 m
}
, E$ z* \: J6 S9 X8 ]; {t5 u' g" ^* h" W8 U- l2 b;

j6 u
5 n) q8 M' K- S* y
; send,{Ctrl down}cc{Ctrl up} z( u; y- S6 b. K- j0 L1 S/ b2 r0 \/ }k( A4 t% p" [' p
run D:\新建文件

夹\软件\GoldenDict\GoldenDict.exe%clipboard%9 ^4 h2 |) jf1 Nl7 q8 ?

, l- Tp5 [4 E( I2 t; z}' R, L. Y( Q0 }: I
return

Oeasy 发表于 2015-9-18 07:18:20

clliangju 发表于 2015-9-17 16:52
你好,请问,autohot, 建立了一个ahk文件,直接复制代码,只改动最后的一行吗,怎么不行呀,复制粘贴代码后 ...


1. 本论坛设置了干扰字符串,所以你直接从我帖子里直接复制的代码,是不可能正常运行的。解决办法有 2:
        ①去原文章 http://wlhunag.blogspot.com/2012/06/goldendict.html(这个链接需要科学上网) 复制代码。
        ②下载附件【GoldenDict.zip】,解压,里面的 GoldenDict.txt 就是从 http://wlhunag.blogspot.com/2012/06/goldendict.html 这里复制的代码,没有干扰字符串。可把下面这一行更改为自己的 GoldenDict.exe 所在的路径,重新创建一个 ahk 文件。
run D:\XXXX(GD所在路徑)\GoldenDict\GoldenDict.exe%clipboard%
顺便,利用 Autohotkey 取词,体验在一部分用户看来,也不是那么好,可以根据自己的喜好选择某些时候运行脚本,某些时候停止脚本。

2.
Q: 还有我用GOLden,直接设置屏幕取词可以,但是,选择屏幕取词和按下crt情况下取词就没有反应了
A: 你应该按 Ctrl+ C + C (也就是按住 Ctrl,同时按下 C 两次)。


stoneiiyyn 发表于 2018-2-21 22:00:14

用的楼主推荐的这段script,win10下挺好用的
;GoldenDict 划译插件
;version 0.9
;[email protected]
;2016-01-08
;GUI及其他功能完善有待日后空闲
;========使用说明========
;pause键 启用/停用 脚本
;鼠标拖选、双击选词翻译



Pause::Suspend
~LButton::
CoordMode, Mouse, Screen
SetKeyDelay 0, 10
c := 0

MouseGetPos, x1, y1
KeyWait, LButton
MouseGetPos, x2, y2

if (x1<>x2 or y1<>y2) {
        gosub, Copy
}
else if (A_priorHotKey = "~LButton" and A_TimeSincePriorHotkey < 400){
        gosub, Copy
}
return

Copy:
c := 1
Send ^c
return

OnClipboardChange:
if (c) {
        Send ^{c 2}
;        MsgBox %clipboard%
}
return
感谢楼主的分享!

famain 发表于 2015-8-6 12:11:50

需要使用Autohotkey。
我还是本办法吧,ctrl+c+c

验证码真是有问题,尧舜禹那个问题,我ABCD都输入了几遍,仍然错误。

supernj 发表于 2015-8-26 02:06:34

果然很完美

supernj 发表于 2015-8-26 02:12:28

不过美中不足,word里面好像无法用这种方法屏幕取词

SamW. 发表于 2015-8-26 15:35:15

{:4_104:}感谢转载分享代码!

clliangju 发表于 2015-9-17 16:55:40

还有我用GOLden,直接设置屏幕取词可以,但是,选择屏幕取词和按下crt情况下取词就没有反应了

clliangju 发表于 2015-9-18 17:20:45

Oeasy 发表于 2015-9-18 07:18
1. 本论坛设置了干扰字符串,所以你直接从我帖子里直接复制的代码,是不可能正常运行的。解决办法有 2 ...

多谢了,学习了

Oeasy 发表于 2016-1-9 10:47:07


ZZ http://weibo.com/1928931362/Dcdvnphx7
GoldenDict 划译&点译插件 v0.9https://0paste.com/8133

fedor 发表于 2016-2-18 09:12:53

使用Ctrl + C + C不能取词是怎么回事啊,每次按这个组合键总是跳出第一次查询的词条,而不是当前要查询的词条。win7和win10下都有过这个问题。

yilksd 发表于 2016-2-18 20:41:43

命令行命令:goldendict.exe <要查的词>   这样可以查词,而且是弹出取词窗口来显示释义。因此做一个浏览器扩展,使得划词之后就触发此命令即可。
这样最完美。希望能够有大神出手实现一下。

zzhhbyt1 发表于 2016-3-20 14:31:20

Nice work, bro!

Oeasy 发表于 2016-5-9 21:34:13

fedor 发表于 2016-2-18 09:12
使用Ctrl + C + C不能取词是怎么回事啊,每次按这个组合键总是跳出第一次查询的词条,而不是当前要查询的词 ...


额,你是不是没有用鼠标选中(即“高亮”)想要查询的那个词?
平白无故按 Ctrl + C + C ,GoldenDict 哪知道你要查哪个词啊,调出来的窗口显示的当然是之前查的那个词。

fedor 发表于 2016-5-10 22:49:00

Oeasy 发表于 2016-5-9 21:34
额,你是不是没有用鼠标选中(即“高亮”)想要查询的那个词?
平白无故按 Ctrl + C + C ,GoldenDi ...

肯定是用鼠标选中要查询的词了

Doris 发表于 2016-7-12 11:21:11

fedor 发表于 2016-5-10 22:49
肯定是用鼠标选中要查询的词了

是这样的,ctrl c 失效 。改成ctrl +任意 就可以了 。有点麻烦。然后再CTRL+C+任意 可以查词,

原因就是CTRL C 失效。因为在开G的时候 别的文档 或者查询什么 CTRL C 也是失效的 关了软件就好了 可见 不知什么和他冲突了。希望有人可以解答 新版本可以改正。

Doris 发表于 2016-7-12 11:23:02

Oeasy 发表于 2016-5-9 21:34
额,你是不是没有用鼠标选中(即“高亮”)想要查询的那个词?
平白无故按 Ctrl + C + C ,GoldenDi ...

OOOOOO大大大   他那个问题。

是这样的,ctrl c 失效 。改成ctrl +任意 就可以了 。有点麻烦。然后再CTRL+C+任意 可以查词,

原因就是CTRL C 失效。因为在开G的时候 别的文档 或者查询什么 CTRL C 也是失效的 关了软件就好了 可见 不知什么和他冲突了。希望有人可以解答 新版本可以改正。

fedor 发表于 2016-7-13 14:16:56

Doris 发表于 2016-7-12 11:21
是这样的,ctrl c 失效 。改成ctrl +任意 就可以了 。有点麻烦。然后再CTRL+C+任意 可以查词,

原因就 ...

怎么改都没用的,都已经试过了。

桃丝兰 发表于 2016-9-17 16:42:10

Ctrl + C + C 太麻烦,试试Autohotkey好用不

账号已注册 发表于 2016-11-22 18:25:07

经测可用,功能非常棒,特来感谢!{:4_104:}

xjtubright 发表于 2016-12-7 10:17:55

Oeasy 发表于 2015-9-18 07:18
1. 本论坛设置了干扰字符串,所以你直接从我帖子里直接复制的代码,是不可能正常运行的。解决办法有 2 ...

世事艰难啊

syd1991 发表于 2017-5-23 10:41:35

简直是爽的飞起,感谢o大!

zoeyma 发表于 2017-10-3 15:04:22

autohotkey +代码ahk文件 goldendict高亮取词实在是太棒了

sff34 发表于 2017-11-30 22:17:09

fedor 发表于 2016-5-10 22:49
肯定是用鼠标选中要查询的词了

我也遇到这个问题了,Ctrl + C + D或者Ctrl + C +任何别的键都不能用。我就纳闷了,看到按Ctrl + C + C时,goldendict窗口左上角的回退键一闪一闪的,自动回到第一个,这机子里有什么妖物在作祟?

然后卸载了360,天下太平了。不知这妖物是360还是别的什么东西,反正360卸了问题就解决了。不过,如果同时打开goldendict和欧路,在word文档内容被选中时,如果输入法是中文状态,有时会冒出一个C字来,看来后台还不干净。是goldendict的bug?



sff34 发表于 2017-11-30 22:22:42

本帖最后由 sff34 于 2017-12-1 01:27 编辑

看到另一个写GoldenDict+Autohotkey代码的作者说,有时会冒出"C"字来( https://weibo.com/1928931362/Dcdvnphx7?type=comment )。看了他的代码,用的是“Send ^{c 2}”而不是原作者的"send,{Ctrl down}cc{Ctrl up}"。

难道现在系统里的某程序有类似“Send ^{c 2}”的代码?

有道词典的取词有时会使crtl+c失效,( https://www.zhihu.com/question/54162089 ),不过我没遇到过。让有道词典高亮后GoldenDict就能取词,这样才算完美。试一试让有道词典分别用屏幕指译和划译取“looking at”、“looks at”之类的词(不要开OCR),再对比别的软件的屏幕取词和输入显示,哎。。。

就有道词典和EBDic还算合格。这GoldenDict,连一些最基本的功能都不具备啊。。。

页: [1] 2
查看完整版本: GoldenDict+Autohotkey-> 高亮即取词[Windows]