Giter Club home page Giter Club logo

Comments (18)

Bush2021 avatar Bush2021 commented on July 20, 2024

看起来是个不错的办法!我抽空看看,也欢迎你直接 Pr。

from chrome_plus.

Ritchie1108 avatar Ritchie1108 commented on July 20, 2024

看起来是个不错的办法!我抽空看看,也欢迎你直接 Pr。

我是已经实现了, 没发现什么问题, 除了还需要排除一些快捷键的按键状态, TraversalAccessible 配合 lambda+捕获自己 就能递归, pr就算了, 本地代码最早从v++那边clone下来开始改的, 差异太多

from chrome_plus.

Bush2021 avatar Bush2021 commented on July 20, 2024

我目前算是初步实现了,不过有个判断是否为新标签页的逻辑还有点问题。你可以看一下我现在的实现方法和你有什么不同吗?

from chrome_plus.

Ritchie1108 avatar Ritchie1108 commented on July 20, 2024

从 Chrome_RenderWidgetHostHWND 里取 ROLE_SYSTEM_DOCUMENT 的 value 来判断是不是 "chrome://new-tab-page" 会不会简单一点? 比较麻烦的是一些新标签页的扩展, value 的值可能只能是匹配 "chrome-extension://" 前缀加上 "newtab" 的模糊匹配这样的规则来处理了

from chrome_plus.

Bush2021 avatar Bush2021 commented on July 20, 2024

从 Chrome_RenderWidgetHostHWND 里取 ROLE_SYSTEM_DOCUMENT 的 value 来判断是不是 "chrome://new-tab-page" 会不会简单一点? 比较麻烦的是一些新标签页的扩展, value 的值可能只能是匹配 "chrome-extension://" 前缀加上 "newtab" 的模糊匹配这样的规则来处理了

其实我现在的判断应该没有大问题,新建标签那个按钮的 Name 和新标签页是一样的,这样写也可以解决语言问题,应该能匹配大多数情况。

现在主要是点击书签文件夹展开的那个菜单栏不在 TopContainerView 里面,所以这时候无法正确判断当前是否为新标签页,我不知道是不是我书签那个逻辑写的有问题。

from chrome_plus.

Ritchie1108 avatar Ritchie1108 commented on July 20, 2024

从 Chrome_RenderWidgetHostHWND 里取 ROLE_SYSTEM_DOCUMENT 的 value 来判断是不是 "chrome://new-tab-page" 会不会简单一点? 比较麻烦的是一些新标签页的扩展, value 的值可能只能是匹配 "chrome-extension://" 前缀加上 "newtab" 的模糊匹配这样的规则来处理了

其实我现在的判断应该没有大问题,新建标签那个按钮的 Name 和新标签页是一样的,这样写也可以解决语言问题,应该能匹配大多数情况。

现在主要是点击书签文件夹展开的那个菜单栏不在 TopContainerView 里面,所以这时候无法正确判断当前是否为新标签页,我不知道是不是我书签那个逻辑写的有问题。

这个问题我在写的时候碰到过, 我本地是在 Chrome_WidgetWin_2 里, 但是其他人又是正常的 Chrome_WidgetWin_1
所以你要取 TopContainerView 的话, 你那边传的 hwnd 可以用 GetFocus() 来传进去

from chrome_plus.

Ritchie1108 avatar Ritchie1108 commented on July 20, 2024

忘了说了, 用我的方法的话, 需要加上启动参数
--force-renderer-accessibility

from chrome_plus.

Ritchie1108 avatar Ritchie1108 commented on July 20, 2024

从 Chrome_RenderWidgetHostHWND 里取 ROLE_SYSTEM_DOCUMENT 的 value 来判断是不是 "chrome://new-tab-page" 会不会简单一点? 比较麻烦的是一些新标签页的扩展, value 的值可能只能是匹配 "chrome-extension://" 前缀加上 "newtab" 的模糊匹配这样的规则来处理了

其实我现在的判断应该没有大问题,新建标签那个按钮的 Name 和新标签页是一样的,这样写也可以解决语言问题,应该能匹配大多数情况。

现在主要是点击书签文件夹展开的那个菜单栏不在 TopContainerView 里面,所以这时候无法正确判断当前是否为新标签页,我不知道是不是我书签那个逻辑写的有问题。

name判断会有个问题, 如果用了标签页扩展, ROLE_SYSTEM_PAGETAB 的 name 和"新建标签页按钮"的 name 不一定会相同

from chrome_plus.

parademovie avatar parademovie commented on July 20, 2024

另一个思路是把书签的打开方式强制替换为 ctrl+鼠标左键,也就是说:
原版chrome:用户 左键 点击书签时,效果为在 前台当前页打开网址;用户 ctrl+左键 点击书签时,效果为在 后台新标签页打开网址,如果打开的是书签文件夹,则保证文件夹弹出窗口点击后不消失。

修改后的效果:用户 左键 点击书签 或者 ctrl+左键 点击书签时,效果都为在 后台新标签页打开网址
当然以上是一个选项,不需要的可以不开启。
解决方案可以是:
1.改变书签的打开方式。
判断对书签的打开方式,把左键替换为ctrl+左键,类似ahk的按键替换
2.改变书签打开后的效果。
无论哪种打开方式,把书签打开后的效果都变成 ctrl+左键 的效果,即为 后台新标签页打开网址,如果打开的是书签文件夹,则保证文件夹弹出窗口点击后不消失。

from chrome_plus.

Bush2021 avatar Bush2021 commented on July 20, 2024

这个问题我在写的时候碰到过, 我本地是在 Chrome_WidgetWin_2 里, 但是其他人又是正常的 Chrome_WidgetWin_1 所以你要取 TopContainerView 的话, 你那边传的 hwnd 可以用 GetFocus() 来传进去

抱歉回复迟了。

我现在这个问题应该不是 Chrome_WidgetWin_ 不一样导致的吧,这个也可以在前面匹配的时候改成用 wcsstr 匹配通用字符串。

现在是这俩书签在新标签打开的功能单独使用都是正常的,但是如果还要判断新标签页的话文件夹那个就会有问题,我测试 GetFocus() 好像没能解决,感觉是点击文件夹之后导致 hwnd 变了,就无法正确判断了。

name判断会有个问题, 如果用了标签页扩展, ROLE_SYSTEM_PAGETAB 的 name 和"新建标签页按钮"的 name 不一定会相同

我试了 ITab 和 Infinity 都正常,你用的标签页扩展是?

from chrome_plus.

Bush2021 avatar Bush2021 commented on July 20, 2024

另一个思路是把书签的打开方式强制替换为 ctrl+鼠标左键,也就是说: 原版chrome:用户 左键 点击书签时,效果为在 前台当前页打开网址;用户 ctrl+左键 点击书签时,效果为在 后台新标签页打开网址,如果打开的是书签文件夹,则保证文件夹弹出窗口点击后不消失。

修改后的效果:用户 左键 点击书签 或者 ctrl+左键 点击书签时,效果都为在 后台新标签页打开网址。 当然以上是一个选项,不需要的可以不开启。 解决方案可以是: 1.改变书签的打开方式。 判断对书签的打开方式,把左键替换为ctrl+左键,类似ahk的按键替换。 2.改变书签打开后的效果。 无论哪种打开方式,把书签打开后的效果都变成 ctrl+左键 的效果,即为 后台新标签页打开网址,如果打开的是书签文件夹,则保证文件夹弹出窗口点击后不消失。

不是很明白你的意思。

原版效果是左键单击在当前页打开,Ctrl+左键(或直接中键)在后台打开,Shift+中键在前台打开。我修改的方法就是发送 Shift+中键实现在前台打开标签页。所以你说的方式和我的只有打开方式不同吧?

from chrome_plus.

parademovie avatar parademovie commented on July 20, 2024

不是很明白你的意思。
原版效果是左键单击在当前页打开,Ctrl+左键(或直接中键)在后台打开,Shift+中键在前台打开。我修改的方法就是发送 Shift+中键实现在前台打开标签页。所以你说的方式和我的只有打开方式不同吧?

你好,你说的没错,就是打开方式不同。
其实就是建议再增加一个 发送 Ctrl+左键 实现 后台新标签页打开。比如Ctrl_click_open_bookmark=1

这样的好处在于:当书签栏有文件夹时,左键点击打开该文件夹里的某个书签时,你会发现该书签会在 后台新标签页打开 ,而同时 该文件夹的弹窗不消失,这时你就可以连续多次左键点击打开该文件夹里的 其他的 更多的 你喜欢的 书签了。
而这些书签都会在 后台新标签页打开,不影响当前页面 用户正在浏览的内容。

而 Shift+中键 和 直接左键,点击文件夹的某书签后,该文件夹窗口消失了,就不能连续打开书签了。

所以感觉会很实用,而且更有效率。

再次感谢🙏

from chrome_plus.

Ritchie1108 avatar Ritchie1108 commented on July 20, 2024

我试了 ITab 和 Infinity 都正常,你用的标签页扩展是?

我测试的时候发现 speeddial2 会有不同

现在是这俩书签在新标签打开的功能单独使用都是正常的,但是如果还要判断新标签页的话文件夹那个就会有问题,我测试 GetFocus() 好像没能解决,感觉是点击文件夹之后导致 hwnd 变了,就无法正确判断了。

抱歉是我说错了, 我判断当前是否在"新标签页"的方式和你不太一样, 是我前面提到的方法, GetFocus实际上也是在这个方法里用来获取"Chrome_RenderWidgetHostHWND"的

auto hwnd = FindWindowEx(GetFocus(), NULL, L"Chrome_RenderWidgetHostHWND", NULL);

从 Chrome_RenderWidgetHostHWND 里取 ROLE_SYSTEM_DOCUMENT 的 value 来判断是不是 "chrome://new-tab-page" 会不会简单一点? 比较麻烦的是一些新标签页的扩展, value 的值可能只能是匹配 "chrome-extension://" 前缀加上 "newtab" 的模糊匹配这样的规则来处理了

from chrome_plus.

pengweiqhca avatar pengweiqhca commented on July 20, 2024

我的书签栏只会有新建的标签时才会显示,所以和这个需求实现是一样的啊。

from chrome_plus.

Bush2021 avatar Bush2021 commented on July 20, 2024

抱歉是我说错了, 我判断当前是否在"新标签页"的方式和你不太一样, 是我前面提到的方法, GetFocus实际上也是在这个方法里用来获取"Chrome_RenderWidgetHostHWND"的

我这边反而不太能用这方法来判断,我用的 iTab,获取到 value 是 chrome-extension://mhloojimgilafopcmlcikiidgbbnelip/dist/index.html,可能这方法不太适合我本地吧。

from chrome_plus.

Bush2021 avatar Bush2021 commented on July 20, 2024

我测试的时候发现 speeddial2 会有不同

我试了你这个扩展,它标题的命名是 "New tab",而我获取到新标签页按钮的名字是 "New Tab",所以才没正确匹配……所以如果用我这种匹配方式,只要忽略大小写,我觉得匹配精度还是可以的,就是目前有冲突。

from chrome_plus.

Bush2021 avatar Bush2021 commented on July 20, 2024

你好,你说的没错,就是打开方式不同。
其实就是建议再增加一个 发送 Ctrl+左键 实现 后台新标签页打开。比如Ctrl_click_open_bookmark=1

这样的好处在于:当书签栏有文件夹时,左键点击打开该文件夹里的某个书签时,你会发现该书签会在 后台新标签页打开 ,而同时 该文件夹的弹窗不消失,这时你就可以连续多次左键点击打开该文件夹里的 其他的 更多的 你喜欢的 书签了。
而这些书签都会在 后台新标签页打开,不影响当前页面 用户正在浏览的内容。

而 Shift+中键 和 直接左键,点击文件夹的某书签后,该文件夹窗口消失了,就不能连续打开书签了。

所以感觉会很实用,而且更有效率。

再次感谢🙏

个性化的需求就请你自己修改吧,况且你这个需求和我想实现的是有些冲突的。

from chrome_plus.

Ritchie1108 avatar Ritchie1108 commented on July 20, 2024

抱歉是我说错了, 我判断当前是否在"新标签页"的方式和你不太一样, 是我前面提到的方法, GetFocus实际上也是在这个方法里用来获取"Chrome_RenderWidgetHostHWND"的

我这边反而不太能用这方法来判断,我用的 iTab,获取到 value 是 chrome-extension://mhloojimgilafopcmlcikiidgbbnelip/dist/index.html,可能这方法不太适合我本地吧。

🤣 所以我偷懒了, 直接过滤开头为 chrome-extension://

from chrome_plus.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.