V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qping
V2EX  ›  Windows

windows 中有办法知道上一个窗口里的内容么,比如: 文件管理器里的路径

  •  
  •   qping · 12 天前 · 1445 次点击

    我想实现类似在文件管理器界面上通过快捷键能打开一个我自己的应用,希望能知道之前文件管理器中打开的路径是什么

    使用场景是,根据当前的路径分析工程类型,然后调用 IDE 打开项目,快速打开 rider/intellij/vscode 这个有办法实现么

    https://imgur.com/a/6LDCq9T

    尝试问了下 cursor ,给的几个方案调用了 windows api ,都不管用

    22 条回复    2025-04-25 20:51:49 +08:00
    tabris17
        1
    tabris17  
       12 天前
    我不明白你所谓的“通过快捷键能打开一个我自己的应用”是什么意思

    如果你是地址栏里输入`cmd`打开命令行的话,那么在程序里用`GetCurrentDirectory()`就行
    qping
        2
    qping  
    OP
       12 天前
    @tabris17 "我自己的应用" 是类似 alfred/ raycast 之类的启动器,想自己写个 wpf 程序
    mercury233
        3
    mercury233  
       12 天前
    autohotkey 专门做这个的,安装后附带有个 window spy 能看到一些可以轻松提取的
    qping
        4
    qping  
    OP
       12 天前
    @mercury233 看起来是我要的,谢谢,我去瞅瞅
    qping
        5
    qping  
    OP
       12 天前
    @mercury233 这个 spy 只能获取 windows 的 exe 名等,explorer.exe 内部的一些状态获取不到
    https://imgur.com/a/oOBFejR
    hafuhafu
        6
    hafuhafu  
       12 天前
    你是想实现 Listary 的 Ctrl+G 吧
    lzoje
        7
    lzoje  
       12 天前
    右键在当前路径打开?
    newaccount
        8
    newaccount  
       12 天前
    这玩意不就是 git bash here 吗?
    具体实现还是有点繁琐,要你在大模型上问一下这个 “如何实现类似 git bash here 的功能”
    大概流程就是你要写个 bat 脚本来进行判断分析,路径可以在脚本中获取到,然后把这个脚本通过注册表注册到右键菜单
    qping
        9
    qping  
    OP
       12 天前
    @hafuhafu 差不多,不过是要知道上一个窗口的状态
    xtreme1
        10
    xtreme1  
       12 天前
    mercury233
        11
    mercury233  
       12 天前
    @qping #5 看看 All Text 里有没有
    julyclyde
        12
    julyclyde  
       11 天前
    无名师的 GUI 论

    一晚,无名师和 Nubi 参加一个程序员的探讨会。有个程序员问 Nubi 和他的老师来自哪所学校。当得知他们是 Unix 大道的追随者时,程序员颇为不屑。

    “Unix 命令行工具太粗糙太落后”,他讥讽道。“现代的、设计得当的操作系统可以在图形用户界面中做任何事情。”

    无名师一言不发,只是指着月亮。旁边的一条狗对着他的手狂吠。

    “我不明白。”程序员说。

    无名师依然缄默,指着一幅佛祖像,然后又指着一扇窗。

    “你想说什么?”程序员问。

    无名师指着程序员的头,接着指着一块大石。

    “请把话说清楚!”程序员要求道。

    无名师深深蹙眉,轻拍程序员的鼻子两下,把他扔到旁边的垃圾箱中。

    程序员试图从垃圾堆挣扎出来之时,那条狗跑过来在他身上便溺。

    此时,程序员眼中一亮。
    qping
        13
    qping  
    OP
       11 天前
    @xtreme1 感谢,c++全忘光了,我研究下


    @mercury233 没,不过找到个 AHK 的脚本可以查到 explorer 中选中的文件


    @julyclyde 我喜欢 GUI , 但同样我也不排斥命令行
    julyclyde
        14
    julyclyde  
       11 天前
    @qping 你这个回复并没有任何信息量

    我想说的是,既然那软件已经决定了用视觉而非符号通信的形式来表达,你还非要死磕它,那就很难了
    不如考虑一下能不能让它直接输出符号
    qping
        15
    qping  
    OP
       11 天前 via iPhone
    @julyclyde 嘿,哥们,你之前的回复了一堆字,看着是想表达什么,让人猜谜语的话,不能怪我回复没有信息量啊,你早这么说不就明白了

    不是我死磕,是这些功能在 macos 上是可以已经存在的的,想尝试下能不能在 windows 上复现,生命在于折腾不是么
    ysc3839
        16
    ysc3839  
       11 天前   ❤️ 1
    获取“上一个持有焦点”的窗口,可以参考 KeePass 模拟键盘输入密码的代码,KeePass 模拟键盘输入密码前会自动跳转回上一个持有焦点的窗口。
    获取文件资源管理器窗口的路径,可以考虑从窗口中的一些子窗口提取,Win10 是有一个工具条中包含完整路径的,Win11 就不知道了。
    cnbatch
        17
    cnbatch  
       10 天前   ❤️ 1
    换个思路

    在 Windows 要做这种事,更适合的做法是做个 Explorer Shell 扩展,然后让某个快捷键组合跟这个扩展关联起来。

    这样按下快捷键时就能调用 Shell 扩展,该扩展就可以获取当前 Explorer 的内容了。

    搜索关键词:
    windows explorer.exe shell 扩展
    windows explorer.exe shell extension
    julyclyde
        18
    julyclyde  
       10 天前
    @qping 这谜语很旧了。大概有四十多年了
    mmdsun
        19
    mmdsun  
       10 天前 via iPhone   ❤️ 1
    获得当前鼠标位置下的 Windows 资源管理器路径?
    https://blog.csdn.net/qq_18218335/article/details/56677351 类似这种?
    boy666
        20
    boy666  
       10 天前 via Android
    没看懂啥意思,难道你需要的是这个? https://getquicker.net/
    UnluckyNinja
        21
    UnluckyNinja  
       10 天前 via Android
    猜你想找:右键上下文菜单自定义命令,注册表里抄一下或者看看其他软件怎么添加的(比如 vscode ),路径就在启动参数里,再通过任意进程通信方式,发送到正在运行的应用就行了(或者直接启动新实例)。
    通过窗口获取信息太 hack 了,非常容易兔子洞
    qping
        22
    qping  
    OP
       9 天前
    @mmdsun 不太行,win11 已经无法通过那个获取了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2669 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:20 · PVG 17:20 · LAX 02:20 · JFK 05:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.