Comments (18)
看起来是个不错的办法!我抽空看看,也欢迎你直接 Pr。
from chrome_plus.
看起来是个不错的办法!我抽空看看,也欢迎你直接 Pr。
我是已经实现了, 没发现什么问题, 除了还需要排除一些快捷键的按键状态, TraversalAccessible 配合 lambda+捕获自己 就能递归, pr就算了, 本地代码最早从v++那边clone下来开始改的, 差异太多
from chrome_plus.
我目前算是初步实现了,不过有个判断是否为新标签页的逻辑还有点问题。你可以看一下我现在的实现方法和你有什么不同吗?
from chrome_plus.
从 Chrome_RenderWidgetHostHWND 里取 ROLE_SYSTEM_DOCUMENT 的 value 来判断是不是 "chrome://new-tab-page" 会不会简单一点? 比较麻烦的是一些新标签页的扩展, value 的值可能只能是匹配 "chrome-extension://" 前缀加上 "newtab" 的模糊匹配这样的规则来处理了
from chrome_plus.
从 Chrome_RenderWidgetHostHWND 里取 ROLE_SYSTEM_DOCUMENT 的 value 来判断是不是 "chrome://new-tab-page" 会不会简单一点? 比较麻烦的是一些新标签页的扩展, value 的值可能只能是匹配 "chrome-extension://" 前缀加上 "newtab" 的模糊匹配这样的规则来处理了
其实我现在的判断应该没有大问题,新建标签那个按钮的 Name 和新标签页是一样的,这样写也可以解决语言问题,应该能匹配大多数情况。
现在主要是点击书签文件夹展开的那个菜单栏不在 TopContainerView 里面,所以这时候无法正确判断当前是否为新标签页,我不知道是不是我书签那个逻辑写的有问题。
from chrome_plus.
从 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.
忘了说了, 用我的方法的话, 需要加上启动参数
--force-renderer-accessibility
from chrome_plus.
从 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.
另一个思路是把书签的打开方式强制替换为 ctrl+鼠标左键
,也就是说:
原版chrome:用户 左键
点击书签时,效果为在 前台当前页打开网址
;用户 ctrl+左键
点击书签时,效果为在 后台新标签页打开网址
,如果打开的是书签文件夹,则保证文件夹弹出窗口点击后不消失。
修改后的效果:用户 左键
点击书签 或者 ctrl+左键
点击书签时,效果都为在 后台新标签页打开网址
。
当然以上是一个选项,不需要的可以不开启。
解决方案可以是:
1.改变书签的打开方式。
判断对书签的打开方式,把左键
替换为ctrl+左键
,类似ahk的按键替换。
2.改变书签打开后的效果。
无论哪种打开方式,把书签打开后的效果都变成 ctrl+左键
的效果,即为 后台新标签页打开网址
,如果打开的是书签文件夹,则保证文件夹弹出窗口点击后不消失。
from chrome_plus.
这个问题我在写的时候碰到过, 我本地是在 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.
另一个思路是把书签的打开方式强制替换为
ctrl+鼠标左键
,也就是说: 原版chrome:用户左键
点击书签时,效果为在前台当前页打开网址
;用户ctrl+左键
点击书签时,效果为在后台新标签页打开网址
,如果打开的是书签文件夹,则保证文件夹弹出窗口点击后不消失。修改后的效果:用户
左键
点击书签 或者ctrl+左键
点击书签时,效果都为在后台新标签页打开网址
。 当然以上是一个选项,不需要的可以不开启。 解决方案可以是: 1.改变书签的打开方式。 判断对书签的打开方式,把左键
替换为ctrl+左键
,类似ahk的按键替换。 2.改变书签打开后的效果。 无论哪种打开方式,把书签打开后的效果都变成ctrl+左键
的效果,即为后台新标签页打开网址
,如果打开的是书签文件夹,则保证文件夹弹出窗口点击后不消失。
不是很明白你的意思。
原版效果是左键单击在当前页打开,Ctrl+左键(或直接中键)在后台打开,Shift+中键在前台打开。我修改的方法就是发送 Shift+中键实现在前台打开标签页。所以你说的方式和我的只有打开方式不同吧?
from chrome_plus.
不是很明白你的意思。
原版效果是左键单击在当前页打开,Ctrl+左键(或直接中键)在后台打开,Shift+中键在前台打开。我修改的方法就是发送 Shift+中键实现在前台打开标签页。所以你说的方式和我的只有打开方式不同吧?
你好,你说的没错,就是打开方式不同。
其实就是建议再增加一个 发送 Ctrl+左键 实现 后台新标签页打开。比如Ctrl_click_open_bookmark=1
这样的好处在于:当书签栏有文件夹时,左键点击打开该文件夹里的某个书签时,你会发现该书签会在 后台新标签页打开 ,而同时 该文件夹的弹窗不消失,这时你就可以连续多次左键点击打开该文件夹里的 其他的 更多的 你喜欢的 书签了。
而这些书签都会在 后台新标签页打开,不影响当前页面 用户正在浏览的内容。
而 Shift+中键 和 直接左键,点击文件夹的某书签后,该文件夹窗口消失了,就不能连续打开书签了。
所以感觉会很实用,而且更有效率。
再次感谢🙏
from chrome_plus.
我试了 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.
我的书签栏只会有新建的标签时才会显示,所以和这个需求实现是一样的啊。
from chrome_plus.
抱歉是我说错了, 我判断当前是否在"新标签页"的方式和你不太一样, 是我前面提到的方法, GetFocus实际上也是在这个方法里用来获取"Chrome_RenderWidgetHostHWND"的
我这边反而不太能用这方法来判断,我用的 iTab,获取到 value 是 chrome-extension://mhloojimgilafopcmlcikiidgbbnelip/dist/index.html,可能这方法不太适合我本地吧。
from chrome_plus.
我测试的时候发现 speeddial2 会有不同
我试了你这个扩展,它标题的命名是 "New tab",而我获取到新标签页按钮的名字是 "New Tab",所以才没正确匹配……所以如果用我这种匹配方式,只要忽略大小写,我觉得匹配精度还是可以的,就是目前有冲突。
from chrome_plus.
你好,你说的没错,就是打开方式不同。
其实就是建议再增加一个 发送 Ctrl+左键 实现 后台新标签页打开。比如Ctrl_click_open_bookmark=1这样的好处在于:当书签栏有文件夹时,左键点击打开该文件夹里的某个书签时,你会发现该书签会在 后台新标签页打开 ,而同时 该文件夹的弹窗不消失,这时你就可以连续多次左键点击打开该文件夹里的 其他的 更多的 你喜欢的 书签了。
而这些书签都会在 后台新标签页打开,不影响当前页面 用户正在浏览的内容。而 Shift+中键 和 直接左键,点击文件夹的某书签后,该文件夹窗口消失了,就不能连续打开书签了。
所以感觉会很实用,而且更有效率。
再次感谢🙏
个性化的需求就请你自己修改吧,况且你这个需求和我想实现的是有些冲突的。
from chrome_plus.
抱歉是我说错了, 我判断当前是否在"新标签页"的方式和你不太一样, 是我前面提到的方法, GetFocus实际上也是在这个方法里用来获取"Chrome_RenderWidgetHostHWND"的
我这边反而不太能用这方法来判断,我用的 iTab,获取到 value 是 chrome-extension://mhloojimgilafopcmlcikiidgbbnelip/dist/index.html,可能这方法不太适合我本地吧。
🤣 所以我偷懒了, 直接过滤开头为 chrome-extension://
from chrome_plus.
Related Issues (20)
- Edge 能支持吗 HOT 1
- supermium浏览器 HOT 3
- Can it be used on Thorium and Brave? HOT 1
- Support for policies in portable mode
- 建议增加右键点击的快捷功能 HOT 6
- Chromium 126.x - Error STATUS_DLL_INIT_FAILED HOT 6
- right_click_close 启用,右键关闭tab似乎有bug HOT 5
- 如何增大扩展popup的高度? HOT 8
- 如何增大扩展popup的高度?
- STATUS_ACCESS_VIOLATION HOT 10
- Not Working in 32 bit Thorium or Supermium HOT 2
- 左上角的搜索标签页关闭不了 HOT 1
- 右键关闭标签和MouseInc鼠标手势冲突导致无效 HOT 1
- [edge反馈] edge插件可用,希望作者再优化优化。谢谢~
- 无痕模式下无法写入Win10剪贴板历史记录 HOT 2
- BUG 搜索框自动关闭 HOT 1
- 疑似BUG commandline= 后面写网址,不能识别 HOT 1
- Chrome not opening correctly if not from shortcut HOT 20
- Chrome 126版本 打印预览失败 HOT 3
- Chrome 126版本 打印预览失败
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from chrome_plus.