onlyclxy 发表于 2024-4-7 10:45

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那种在每个窗口上跳转目录是怎么实现的,大佬们有什么猜想吗?

这个搜了好久也没有搜到相关资料.

yysyWang 发表于 2024-4-7 10:57

Listary不是新打开窗口吗

onlyclxy 发表于 2024-4-7 10:59

yysyWang 发表于 2024-4-7 10:57
Listary不是新打开窗口吗

要是在桌面上, 会打开新窗口 如果在一个窗口里操作, 打开另一个路径, 就会在这个窗口里打开那个路径.

yysyWang 发表于 2024-4-7 11:02

onlyclxy 发表于 2024-4-7 10:59
要是在桌面上, 会打开新窗口 如果在一个窗口里操作, 打开另一个路径, 就会在这个窗口里打开那个路径.

哦,我知道你说的那种了,是在已打开的窗口中更改路径。这种方法我用的少,我喜欢双击ctrl键全新打开

onlyclxy 发表于 2024-4-7 11:07

yysyWang 发表于 2024-4-7 11:02
哦,我知道你说的那种了,是在已打开的窗口中更改路径。这种方法我用的少,我喜欢双击ctrl键全新打开

6啊 又学到一个:lol
这两个打开方式都在研究
要是都了解的话, 后续写小工具就方便更方便选择了

yysyWang 发表于 2024-4-7 11:12

我现在对代码都生疏了,这个你问问GPT吧,我对一些不熟悉的语言,用GPT还是能提升不少效率的

onlyclxy 发表于 2024-4-7 11:14

yysyWang 发表于 2024-4-7 11:12
我现在对代码都生疏了,这个你问问GPT吧,我对一些不熟悉的语言,用GPT还是能提升不少效率的

这个不太行.. Listary他们自己搞出来的方案. 别的地方没相关资料这种. gpt都没有被喂到
这种一问他也是三不知了..

zxa2000 发表于 2024-4-7 11:22

这个软件挺好用的。

小酒窝 发表于 2024-4-7 11:26

Listary最近升级太频繁,以间的注册码都不能用了

Ebony9527 发表于 2024-4-7 11:28

有人用Autohotkey实现过类似的,但是需要按快捷键CTRL+G,比如FolderMenuList (可以在GITHUB上找到)quickswitch可以在论坛上找到,但是感觉都不如listray的跳转好用;大概思路应该是当打开的是一个Dialog,开始纪录下一次窗口的HANDLE,如果激活了新的窗口,则获取新的窗口HANDLE,然后返回dialog的时候进行跳转。
页: [1] 2 3
查看完整版本: Listary如何做到跳转目录的?