V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
rpish
V2EX  ›  奇思妙想

想做一个 Windows 上的 Vimium,但是有个功能想不出来怎么实现,请求指教

  •  1
     
  •   rpish · 2018-11-01 22:45:25 +08:00 · 3743 次点击
    这是一个创建于 2248 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家应该都用过 Chrome 上 Vimium 插件吧 可以实现纯键盘操控浏览器,我想在 Windows 下也实现这样一个软件来实现纯键盘操控电脑。 但是被一个功能难住了,该怎么像 vimium 一样按 F 之后识别桌面和任务栏所有图标呢? 有 WindowsAPI 可以实现这个功能吗?还是得做图像识别?

    10 条回复    2018-11-11 23:52:53 +08:00
    ob
        1
    ob  
       2018-11-01 23:26:17 +08:00 via Android
    已经有人用 ahk 实现了类似的功能,具体叫啥忘记了,label 什么的吧,就是按一个键,所有的窗口,或焦点都给一个字母编号,按某个字母对应聚焦或触发点击。
    具体网上搜下。。
    codehz
        2
    codehz  
       2018-11-01 23:32:58 +08:00
    你可以看看辅助功能相关的 API
    PS: 我只知道有这个东西,具体没用过
    billlee
        4
    billlee  
       2018-11-01 23:40:07 +08:00
    看错了,忽略
    geelaw
        5
    geelaw  
       2018-11-01 23:53:21 +08:00
    如果你想识别任务栏所有的程序,你可以 follow Windows 的文档 https://docs.microsoft.com/en-us/windows/desktop/shell/taskbar#managing-taskbar-buttons

    但是我强烈不建议你这样做,因为逻辑非常复杂,很难正确实现。

    另一个方式是使用 Automation API,但是如何确保你目前在桌面上是个问题。

    ——————

    或者不要重复造轮子,因为所有的 Windows 自带的软件都是可以键盘完成所有基本任务的(否则这是一个 accessibility bug,我觉得盲人基本上不会用鼠标)。

    当然有些神奇的软件会做成完全不可访问的样子——比如微信。它的 accessibility 如此之差,令我怀疑他们是不是自己造了一个 windowless UI framework,但是完全没有实现 dialog navigation 和 automation peer。
    milu123
        6
    milu123  
       2018-11-02 00:03:04 +08:00
    在 Windows 上先 FindWindow,然后用 UIAutomation。
    在 OSX 我有做过一个 demo。https://github.com/mario206/Assistant

    注意,界面控件很多的时候,枚举控件会很慢。
    xml123
        7
    xml123  
       2018-11-02 09:11:03 +08:00
    @ob #1 LabelControl,效果其实一般,因为有枚举不到的控件。
    桌面系统想要纯键盘操作舒服还是挺困难的。另一个思路是 VimDesktop,针对不同的软件绑定相应的快捷键。如果只是手不离开键盘,小红点考虑一下?
    chaker
        8
    chaker  
       2018-11-02 13:09:54 +08:00
    ls ~/Desktop/*
    nicevar
        9
    nicevar  
       2018-11-04 10:47:23 +08:00 via Android
    额。。。windows 一直都能纯键盘操作,也很舒服,十来年前就习惯了,首字也能定位,你做类似用 F 定位链接那样意义不大,一个 everything 方便多了
    skyemm
        10
    skyemm  
       2018-11-11 23:52:53 +08:00 via Android
    有一个桌面管理器叫 i3wm,可以试一下移植到 windows
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2748 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 05:57 · PVG 13:57 · LAX 21:57 · JFK 00:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.