大家应该都用过 Chrome 上 Vimium 插件吧 可以实现纯键盘操控浏览器,我想在 Windows 下也实现这样一个软件来实现纯键盘操控电脑。 但是被一个功能难住了,该怎么像 vimium 一样按 F 之后识别桌面和任务栏所有图标呢? 有 WindowsAPI 可以实现这个功能吗?还是得做图像识别?
1
ob 2018-11-01 23:26:17 +08:00 via Android
已经有人用 ahk 实现了类似的功能,具体叫啥忘记了,label 什么的吧,就是按一个键,所有的窗口,或焦点都给一个字母编号,按某个字母对应聚焦或触发点击。
具体网上搜下。。 |
2
codehz 2018-11-01 23:32:58 +08:00
你可以看看辅助功能相关的 API
PS: 我只知道有这个东西,具体没用过 |
3
billlee 2018-11-01 23:39:40 +08:00
|
4
billlee 2018-11-01 23:40:07 +08:00
看错了,忽略
|
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。 |
6
milu123 2018-11-02 00:03:04 +08:00
在 Windows 上先 FindWindow,然后用 UIAutomation。
在 OSX 我有做过一个 demo。https://github.com/mario206/Assistant 注意,界面控件很多的时候,枚举控件会很慢。 |
7
xml123 2018-11-02 09:11:03 +08:00
@ob #1 LabelControl,效果其实一般,因为有枚举不到的控件。
桌面系统想要纯键盘操作舒服还是挺困难的。另一个思路是 VimDesktop,针对不同的软件绑定相应的快捷键。如果只是手不离开键盘,小红点考虑一下? |
8
chaker 2018-11-02 13:09:54 +08:00
ls ~/Desktop/*
|
9
nicevar 2018-11-04 10:47:23 +08:00 via Android
额。。。windows 一直都能纯键盘操作,也很舒服,十来年前就习惯了,首字也能定位,你做类似用 F 定位链接那样意义不大,一个 everything 方便多了
|
10
skyemm 2018-11-11 23:52:53 +08:00 via Android
有一个桌面管理器叫 i3wm,可以试一下移植到 windows
|