Listary如何做到跳转目录的?
本帖最后由 onlyclxy 于 2024-4-26 23:41 编辑好长一段时间,一直好奇Listary的跳转原理是什么
问了好久的gpt,找到了一个直接改变路径的方案.
$shell = New-Object -ComObject Shell.Application
$windows = $shell.Windows()
foreach ($window in $windows) {
# 检查是否为文件系统的窗口
if ($window.LocationURL -match '^file:///') {
# 将URL格式的路径转换为普通文件路径
$path = $window.LocationURL
$localPath = $path.LocalPath
# 检查路径是否位于D盘
if ($localPath -match '^D:\\') {
# 构造对应的C盘路径
$newPath = $localPath -replace '^D:\\', 'C:\'
# 使用Navigate方法前进到新路径
$window.Navigate("file:///$newPath")
# 输出操作信息
Write-Host "已尝试将窗口从 $localPath 前进到 $newPath"
}
}
}
# 清理COM对象
::ReleaseComObject($shell) | Out-Null
Remove-Variable shell
这个可以把有D盘的路径直接跳转到C盘,但是这种会把所有包含D:\的窗口 都跳转到C:\, 其实感觉还是有问题
至于Listary那种在每个窗口上跳转目录是怎么实现的,大佬们有什么猜想吗?
这个搜了好久也没有搜到相关资料.
Listary不是新打开窗口吗 yysyWang 发表于 2024-4-7 10:57
Listary不是新打开窗口吗
要是在桌面上, 会打开新窗口 如果在一个窗口里操作, 打开另一个路径, 就会在这个窗口里打开那个路径. onlyclxy 发表于 2024-4-7 10:59
要是在桌面上, 会打开新窗口 如果在一个窗口里操作, 打开另一个路径, 就会在这个窗口里打开那个路径.
哦,我知道你说的那种了,是在已打开的窗口中更改路径。这种方法我用的少,我喜欢双击ctrl键全新打开 yysyWang 发表于 2024-4-7 11:02
哦,我知道你说的那种了,是在已打开的窗口中更改路径。这种方法我用的少,我喜欢双击ctrl键全新打开
6啊 又学到一个:lol
这两个打开方式都在研究
要是都了解的话, 后续写小工具就方便更方便选择了 我现在对代码都生疏了,这个你问问GPT吧,我对一些不熟悉的语言,用GPT还是能提升不少效率的 yysyWang 发表于 2024-4-7 11:12
我现在对代码都生疏了,这个你问问GPT吧,我对一些不熟悉的语言,用GPT还是能提升不少效率的
这个不太行.. Listary他们自己搞出来的方案. 别的地方没相关资料这种. gpt都没有被喂到
这种一问他也是三不知了.. 这个软件挺好用的。
Listary最近升级太频繁,以间的注册码都不能用了 有人用Autohotkey实现过类似的,但是需要按快捷键CTRL+G,比如FolderMenuList (可以在GITHUB上找到)quickswitch可以在论坛上找到,但是感觉都不如listray的跳转好用;大概思路应该是当打开的是一个Dialog,开始纪录下一次窗口的HANDLE,如果激活了新的窗口,则获取新的窗口HANDLE,然后返回dialog的时候进行跳转。