机缘
- 实战项目中的经验分享
- 日常学习过程中的记录
- 通过文章进行技术交流
收获
- 获得了0个粉丝的关注
日常
- 创作是已经是你生活的一部分了
- 有限的精力下,如何平衡创作和工作学习,这是个问题。
成就
- 我做了一个启动器
代码如下
#Include "utils.ahk"
anyrun() {
guiTitle := "快捷启动"
; 检查窗口是否已经存在
If WinExist(guiTitle) {
; 如果窗口已经存在
WinClose ; 使用由 WinExist 找到的窗口
} else {
; 如果窗口不存在,则创建新窗口
; 禁止调整窗口大小 去掉最大化 和 最小化 按钮 -Caption 移除标题栏和粗边框
MyGui := Gui("AlwaysOnTop MaxSize550x -Caption -MaximizeBox -MinimizeBox -Resize -SysMenu", guiTitle)
MyGui.MarginX := 2
MyGui.MarginY := 0
MyGui.SetFont("s22") ; 设置字体(22 磅).
myedit := MyGui.AddEdit("vMyEdit w400")
; listBox 做到贴边 默认只显示 5 行、宽度 400 位置
listBox := MyGui.AddListBox("R5 vColorChoice w400 XM+0 Y+0 BackgroundF0F0F0 Hidden", [])
button := MyGui.Add("Button", "default X0 Y0 Hidden", "OK")
myedit.OnEvent("Change", editOnChange)
editOnChange(thisGui, *) { ; 声明中 this 参数是可选的.
input := thisGui.Value
if input == "" {
listBox.Delete()
listBox.Visible := false
MyGui.Show("AutoSize")
return
}
; 精确匹配失败则转到模糊匹配
output := ""
Loop Parse, input{
output .= A_LoopField . ".*"
}
output := SubStr(output, 1, -2) ; 去掉最后多余的 ".*"
listBox.Delete()
listBoxData := Array()
for value in appList {
if Type(value.alias) == "Array" {
Loop value.alias.Length
if RegExMatch(value.alias[A_Index], output) {
if value.type == 'app'
listBoxData.Push quickTitle(value)
else if value.type == 'web'
listBoxData.Push quickTitle(value)
break
}
} else {
if RegExMatch(value.alias, output) {
if value.type == 'app' {
listBoxData.Push quickTitle(value)
} else if value.type == 'web' {
listBoxData.Push quickTitle(value)
}
}
}
}
listBox.Visible := listBoxData.Length > 0
if listBox.Visible {
listBox.Add(listBoxData)
listBox.Choose(1)
listBox.Visible := true
}
MyGui.Show("AutoSize")
}
listbox.OnEvent("DoubleClick", listBoxOnDouble)
listBoxOnDouble(thisGui, *) {
; 此时 listbox 必定有焦点,则根据 title 反查 path
Run appFindPathByListBoxText(appList, listBox.Text)
MyGui.Destroy()
}
button.OnEvent("Click", OnButtonClick)
OnButtonClick(thisGui, *) {
; 如果 edit 有焦点 如果为空则啥都不干 否则就查询
; 如果 listbox 有焦点 则无话可说
if listBox.Focused
listBoxOnDouble(listBox)
else {
; 获取编辑框文本内容
MyString := Trim(myedit.Value)
RegExMatch(MyString, "^bd(.+)", &SubPat)
; 可以判断非空
if IsObject(SubPat) and SubPat.Count == 1 {
Run "https://www.baidu.com/s?wd=" . Trim(SubPat[1])
MyGui.Destroy()
return
}
if listBox.Value > 0 {
; 匹配的时候用的是 全拼 ,显示的是真实名称,然后启动用到的路径
listBoxOnDouble(listBox)
return
}
MsgBox('匹配失败')
}
}
MyGui.OnEvent("ContextMenu", onEscape)
; 按住 esc 销毁 窗口
MyGui.OnEvent("Escape", onEscape)
onEscape(*) {
MyGui.Destroy()
}
; 居中但是稍微往上偏移些
halfHeight := A_ScreenHeight/2 - 150
MyGui.Show("xCenter y" halfHeight " AutoSize")
}
}
憧憬
职业规划是啥、创作规划能收益不。