关于 ahk 的问题,ahk 怎么写一个类似 vscode 的 ctrl+shift+p 的一个 dropdownlist 啊,

3 天前
 chenqh

原谅我伸手

我实在搞不定这个 ahk

454 次点击
所在节点    问与答
9 条回复
summerwar
3 天前
```
#Requires AutoHotkey v2.0


; 热键触发命令面板
^+p:: ; Ctrl+Shift+P
{
myGui := Gui()
myGui.Add("Text", , "请选择一个命令:")
myddl := myGui.Add("DropDownList", "vChooseCommand", ["Command 1", "Command 2", "Command 3", "Exit"])
myddl.OnEvent("Change", DDLChanged)
myGui.Show("xCenter yCenter AutoSize")
}


; 创建下拉列表,使用 ComboBox 控件,功能更强大
DDLChanged(obj, *) {
MsgBox("选择了 " . obj.value)
;显示 obj 的所有内容
}

```

简单写了下,其中 obj.value 的值是选中的序号,剩下的自由发挥吧

chenqh
3 天前
@summerwar 你这个无法 Enter 键选中
chenqh
3 天前
我先试一试.
summerwar
3 天前
@chenqh #2 你先看下你的问题,你的问题里哪有说让 Enter 键选中了?你明明问如何写 dropdownlist
summerwar
3 天前
我看了下,vscode 的 ctrl+shift+P 调出来的可不是 dropdownlist ,明明是个 input ,然后根据 input 的内容,筛选命令,然后 enter 确定
chenqh
3 天前
@summerwar 我的,有办法做成跟 vscode 的 createQuickPick,这种类似的功能吗?
summerwar
2 天前
@chenqh #6 调出来的面板有两个,一个是 input ,一个是 listbox ,input 用来输入内容,listbox 是你的所有命令的一个列表,当 input 为空时,显示全部命令,当 input 输入内容时,监听 input 的 change 方法,在里面根据 input 的内容过滤命令,将过滤后的显示在 listbox 里,当键盘往下时按 Enter 或者鼠标点选时,将当前的 listbox 的选中内容放置到 input 中,然后运行这个命令,执行相对应的命令内容就好了。

大致的思路就是上面的
summerwar
2 天前


简单做了个演示,应该是这样的。具体的样式你要调整好,比如没有大的背景,然后位置和高度也要调整等。最后监控 gui 的 submit 提交的结果,运行对应的方法函数就可以了。

上面的 input 在 autohotkey 中是 Edit 控件。当输入内容时,根据输入的内容过滤全部命令,只显示包含输入文字的命令
chenqh
2 天前
@summerwar 你是真的厉害.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1102381

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX