如何实现浏览器右键关闭标签?

功能建议 · 3915 次浏览
janv 创建于 2021-09-14 17:13

如果能够实现这个功能,就不需要再使用其他的手势软件了

指定浏览器标签区域的代码是什么样的?替换右键和中键的功能在浏览器标签区域,就可以实现了,但是不懂代码


回复内容
CL 2021-09-14 17:17
#1

什么手势软件,怎么实现的右键关闭标签呢?

目前quicker里一般是用轮盘或手势图形来关闭的。

janv 2021-09-14 18:44 :

AHK和StrokesPlus都可以实现右键关闭标签,不知道quicker可不可以用代码实现

CL 2021-09-14 20:21 :


CL 最后更新于 2021-09-14 20:22
CL 回复 janv 2021-09-14 20:22 :

方便的话贴个AHK的代码和SP的设置界面看看,是通过什么方式判断是点击的标签呢?


janv 2021-09-14 20:41 :

#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, add, 启用滚轮切换标签页

menu, tray, add, 启用右键关闭标签页

menu, tray, %doubleclick%, 启用双击关闭标签页

menu, tray, %scrolltab%, 启用滚轮切换标签页

menu, tray, %rightclick%, 启用右键关闭标签页

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

  {

    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 {click middle}

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)

}


Cesar 2021-09-14 20:01
#2


janv 2021-09-14 20:12 :

这是在整个页面都可以关闭,我想要右键单击标签关闭

Cesar 回复 janv 2021-09-14 20:13 :

可以在组合动作里面判断

janv 回复 Cesar 2021-09-14 20:42 :

请问怎么判断标签栏?

Cesar 回复 janv 2021-09-14 20:45 :

看你发的AHK代码是通过判断鼠标位置来判断的,这就太简单了,你要还是没思路我给你写一个

janv 回复 Cesar 2021-09-14 20:50 :

AHK代码贴在上面了,我自己看不懂

紫cm煞 2021-09-14 20:50 :

坐等,虽然我用不上。

何曾见 2021-10-06 00:48
#3

可以使用鼠标触发右键来运行组合动作实现,最好把浏览器设置白名单,

组合动作里有个“获取鼠标指针位置控件信息”能检测到选项卡,这样应该比像素定位要好,

简单测试了下,应该可以满足你的需求,右键单击选项卡关闭,网页浏览界面右键不影响,


用那个Xpath,来定位应该更好,但那个我不会整,就用的ControlType来定位的,测试了三个浏览器,EDGE,360,傲游,

每个浏览器的ControlType定义都不一样,我就把三个的ControlType都写进判断了,可以用停运的第二个步骤组,来检测一下你自己的浏览器ControlType的定义,

性能虽然比较差,权当提供一点思路吧。


换成json,然后导入一下。


{
  "Row": 2,
  "Col": 3,
  "ActionType": 24,
  "Title": "测试2",
  "Description": "",
  "Icon": "fa:Light_PageBreak",
  "Path": null,
  "DelayMs": 0,
  "Data": "{\"LimitSingleInstance\":false,\"SummaryExpression\":\"$$\",\"SubPrograms\":[],\"Variables\":[{\"Key\":\"controlType\",\"Type\":0,\"Desc\":\"\",\"DefaultValue\":\"\",\"SaveState\":false,\"IsInput\":false,\"IsOutput\":false,\"ParamName\":\"\",\"InputParamInfo\":null,\"OutputParamInfo\":null},{\"Key\":\"element\",\"Type\":99,\"Desc\":\"\",\"DefaultValue\":\"\",\"SaveState\":false,\"IsInput\":false,\"IsOutput\":false,\"ParamName\":\"\",\"InputParamInfo\":null,\"OutputParamInfo\":null}],\"Steps\":[{\"StepRunnerKey\":\"sys:group\",\"InputParams\":{},\"OutputParams\":{},\"IfSteps\":[{\"StepRunnerKey\":\"sys:flauiautomation\",\"InputParams\":{\"type\":{\"VarKey\":null,\"Value\":\"GetCursorPointControlInfo\"},\"stopIfFail\":{\"VarKey\":null,\"Value\":\"1\"}},\"OutputParams\":{\"isSuccess\":null,\"value\":null,\"rect\":null,\"controlName\":null,\"controlType\":\"controlType\",\"controlXPath\":null,\"controlTypeId\":null,\"controlInfo\":null,\"element\":null},\"IfSteps\":null,\"ElseSteps\":null,\"Note\":\"\",\"Disabled\":false,\"Collapsed\":false},{\"StepRunnerKey\":\"sys:if\",\"InputParams\":{\"condition\":{\"VarKey\":null,\"Value\":\"$= {controlType}.Contains(\\\"TabItem\\\") || {controlType}.Contains(\\\"Text\\\") || {controlType}.Contains(\\\"Window\\\")\"}},\"OutputParams\":{},\"IfSteps\":[{\"StepRunnerKey\":\"sys:keyInput\",\"InputParams\":{\"keys\":{\"VarKey\":null,\"Value\":\"{\\\"CtrlKeys\\\":[17],\\\"Keys\\\":[87]}\"}},\"OutputParams\":{},\"IfSteps\":null,\"ElseSteps\":null,\"Note\":\"\",\"Disabled\":false,\"Collapsed\":false}],\"ElseSteps\":[{\"StepRunnerKey\":\"sys:mouse\",\"InputParams\":{\"type\":{\"VarKey\":null,\"Value\":\"click\"},\"btn\":{\"VarKey\":null,\"Value\":\"right\"}},\"OutputParams\":{},\"IfSteps\":null,\"ElseSteps\":null,\"Note\":\"\",\"Disabled\":false,\"Collapsed\":false},{\"StepRunnerKey\":\"sys:quickeroperations\",\"InputParams\":{\"type\":{\"VarKey\":null,\"Value\":\"reinstallMouseHook\"}},\"OutputParams\":{},\"IfSteps\":null,\"ElseSteps\":null,\"Note\":\"\",\"Disabled\":false,\"Collapsed\":false}],\"Note\":\"\",\"Disabled\":false,\"Collapsed\":false}],\"ElseSteps\":[],\"Note\":null,\"Disabled\":false,\"Collapsed\":false},{\"StepRunnerKey\":\"sys:group\",\"InputParams\":{},\"OutputParams\":{},\"IfSteps\":[{\"StepRunnerKey\":\"sys:flauiautomation\",\"InputParams\":{\"type\":{\"VarKey\":null,\"Value\":\"GetCursorPointControlInfo\"},\"stopIfFail\":{\"VarKey\":null,\"Value\":\"1\"}},\"OutputParams\":{\"isSuccess\":null,\"value\":null,\"rect\":null,\"controlName\":null,\"controlType\":\"controlType\",\"controlXPath\":null,\"controlTypeId\":null,\"controlInfo\":null,\"element\":\"element\"},\"IfSteps\":null,\"ElseSteps\":null,\"Note\":\"\",\"Disabled\":false,\"Collapsed\":false},{\"StepRunnerKey\":\"sys:showText\",\"InputParams\":{\"type\":{\"VarKey\":null,\"Value\":\"NO_WAIT\"},\"text\":{\"VarKey\":\"element\",\"Value\":null},\"title\":{\"VarKey\":null,\"Value\":\"结果内容\"},\"topMost\":{\"VarKey\":null,\"Value\":\"false\"},\"operations\":{\"VarKey\":null,\"Value\":\"\"},\"autoCloseKey\":{\"VarKey\":null,\"Value\":\"\"},\"winLocation\":{\"VarKey\":null,\"Value\":\"CenterScreen\"},\"winSize\":{\"VarKey\":null,\"Value\":\"\"},\"fontsize\":{\"VarKey\":null,\"Value\":\"14\"},\"fontfamily\":{\"VarKey\":null,\"Value\":\"\"},\"bgColor\":{\"VarKey\":null,\"Value\":\"\"},\"textColor\":{\"VarKey\":null,\"Value\":\"\"},\"highlight\":{\"VarKey\":null,\"Value\":\"\"},\"autoSaveToState\":{\"VarKey\":null,\"Value\":\"\"},\"closeWhenLostFocus\":{\"VarKey\":null,\"Value\":\"false\"},\"showLineNum\":{\"VarKey\":null,\"Value\":\"true\"},\"autoWrap\":{\"VarKey\":null,\"Value\":\"true\"},\"showBuildInToolbar\":{\"VarKey\":null,\"Value\":\"true\"},\"copyWholeLine\":{\"VarKey\":null,\"Value\":\"false\"}},\"OutputParams\":{},\"IfSteps\":null,\"ElseSteps\":null,\"Note\":\"\",\"Disabled\":false,\"Collapsed\":false}],\"ElseSteps\":[],\"Note\":null,\"Disabled\":true,\"Collapsed\":false}]}",
  "Data2": null,
  "Data3": null,
  "Children": null,
  "Id": "3eab70e1-b857-44a0-b7d6-10a05c93e0a2",
  "TemplateId": null,
  "TemplateRevision": 0,
  "UseTemplate": false,
  "LastEditTimeUtc": "2021-10-05T16:09:26.9672646+08:00",
  "SharedActionId": "",
  "ShareTimeUtc": null,
  "CreateTimeUtc": "2021-10-05T13:24:32.2314769Z",
  "AsSubProgram": false,
  "SkipWhenStopRunningActions": false,
  "SkipCheckUpdate": false,
  "AutoUpdate": false,
  "KeepInfoWhenUpdate": false,
  "MinQuickerVersion": "",
  "ContextMenuData": "",
  "AllowScrollTrigger": false,
  "EnableEvaluateVariable": false,
  "IsTextProcessor": false,
  "IsImageProcessor": false,
  "Association": {
    "MatchProcess": null,
    "IsImageProcessor": false,
    "ReturnImageFromFirstScreenShotStep": true,
    "IsTextProcessor": false,
    "ReturnTextFromGetSelectedTextStep": true,
    "TextMatchExpression": "",
    "TextMinLength": 0,
    "TextMaxLength": 0,
    "IsHtmlProcessor": false,
    "IsFileProcessor": false,
    "FileMinCount": 0,
    "FileMaxCount": 0,
    "AllowedFileExtensions": "",
    "RequireAllFileMatchExt": false,
    "SearchBoxPlaceholder": "",
    "IsWindowProcessor": false,
    "EnableRealtimeSearch": false
  },
  "DoNotClosePanel": false
}
tu10ng 2021-10-06 01:05
#4

右键关闭浏览器选项卡

试试我写的,我这里试了没问题

tu10ng 最后更新于 2021-10-06 02:04
何曾见 2021-10-06 10:23 :
优秀,比我那个流畅多了,网页上右键体验非常好!
janv 2021-10-06 12:41 :

谢谢,可以用,但edge和chrome是同样的内核,为啥chrome用不了

tu10ng 回复 janv 2021-10-06 13:15 :
可能是浏览器实现不同的问题。我也不清楚。可能他们在定义外观上的标准不统一。chrome把标签页当做普通文本处理,所以用不了。
何曾见 回复 janv 2021-10-06 14:31 :

虽然内核一样,但对控件ControlType的定义不一样

janv 2021-10-06 15:03 :

谢谢你们了,那AHK的代码有参考意义吗

tu10ng 回复 janv 2021-10-06 15:30 :

我没用到,我用的何曾见说的方法

回复主贴