Tools 好物推荐 ChromeWithAHK

Tools 好物推荐 ChromeWithAHK

Chrome 81 双击关闭标签页终极解决方案

本篇博客由 MaxAlex 编写,最初发表于 MaxAlex 的 Blog



Google Chrome

前言

近日更新最新版本的 Google Chrome,之前一直在使用的 Chrome++ 第三方 DLL 扩展正式失效。由于一直习惯了双击关闭标签页 + 滚轮切换标签页,因此更新后无法使用极度不适,最后通过百度 + 自己修改解决。

AutoHotkey

前往 AutoHotkey 的官方网站下载最新版本的 AutoHotkey 并安装。

AHK 脚本文件

原脚本来自知乎,现做了一些修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#NoEnv
#SingleInstance force

IniRead, doubleclick, settings.ini, option, doubleclick,Check
IniRead, scrolltab, settings.ini, option, scrolltab,Check
IniRead, rightclick, settings.ini, option, rightclick,Check

EmptyMem()
menu, tray, NoStandard
menu, tray, add, 启用双击关闭标签页
menu, tray, add, 启用滚轮切换标签页
menu, tray, add, 启用右键关闭标签页
menu, tray, %doubleclick%, 启用双击关闭标签页
menu, tray, %scrolltab%, 启用滚轮切换标签页
menu, tray, %rightclick%, 启用右键关闭标签页
menu, tray, add ;分割线
menu, tray, add, 退出
return

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
退出:
ExitApp
return
启用双击关闭标签页:
if doubleclick<>Check
{
menu, tray, Check, 启用双击关闭标签页
doubleclick=Check
}
Else
{
menu, tray, unCheck, 启用双击关闭标签页
doubleclick=unCheck
}
IniWrite, %doubleclick%, settings.ini, option, doubleclick
EmptyMem()
return

启用滚轮切换标签页:
if scrolltab<>Check
{
menu, tray, Check, 启用滚轮切换标签页
scrolltab=Check
}
Else
{
menu, tray, unCheck, 启用滚轮切换标签页
scrolltab=unCheck
}
IniWrite, %scrolltab%, settings.ini, option, scrolltab
EmptyMem()
return

启用右键关闭标签页:
if rightclick<>Check
{
menu, tray, Check, 启用右键关闭标签页
rightclick=Check
}
Else
{
menu, tray, unCheck, 启用右键关闭标签页
rightclick=unCheck
}
IniWrite, %rightclick%, settings.ini, option, rightclick
EmptyMem()
return

#IfWinActive ahk_class Chrome_WidgetWin_1
~$WheelDown::
~$WheelUp::
if scrolltab=Check
{
MouseGetPos,, ypos
If (ypos>40) Or (ypos<0)
Return
IfEqual,A_ThisHotkey,~$WheelDown, Send ^{PgDn}
Else Send ^{PgUp}
EmptyMem()
}
Return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
~LButton::
if doubleclick=Check
{
WinGetPos,,, w, h, A
MouseGetPos,xpos, ypos
WinGet,Mom,MinMax
If ((ypos>45)And(Mom<1))Or((ypos>28)And(Mom>0)) Or (ypos<0)
Return
If (A_PriorHotkey="~LButton") and (A_TimeSincePriorHotkey<200)
; 此处和知乎版本不同 ↓
send ^w
; 此处和知乎版本不同 ↑
EmptyMem()
}
Return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
~RButton Up::
~RButton::
if rightclick=Check
{
MouseGetPos,xpos, ypos
WinGet,Mom,MinMax
If ((ypos>45)And(Mom<1))Or((ypos>28)And(Mom>0)) Or (ypos<0)
Return
if GetKeyState("1")
Return
IfEqual,A_ThisHotkey,~RButton, Send {Click Middle}
Else Send {Click middle}
EmptyMem()
}
Return
#IfWinActive

EmptyMem(PID="AHK Rocks"){
pid:=(pid="AHK Rocks") ? DllCall("GetCurrentProcessId") : pid
h:=DllCall("OpenProcess", "UInt", 0x001F0FFF, "Int", 0, "Int", pid)
DllCall("SetProcessWorkingSetSize", "UInt", h, "Int", -1, "Int", -1)
DllCall("CloseHandle", "Int", h)
}

若需托盘不显示图标,则在第一行前新建一行插入 #NoTrayIcon 即可,实测支持最新 Chrome 81。

存在的问题

已知双击 Chrome 标题栏空处切换最大化/窗口化时也有概率触发脚本导致标签页关闭,目前解决方法是降低此时双击的频率。