我的创作纪念日

机缘

  1. 实战项目中的经验分享
  2. 日常学习过程中的记录
  3. 通过文章进行技术交流

收获

  1. 获得了0个粉丝的关注

日常

  1. 创作是已经是你生活的一部分了
  2. 有限的精力下,如何平衡创作和工作学习,这是个问题。

成就

  1. 我做了一个启动器

代码如下

#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")
    }
}

憧憬

职业规划是啥、创作规划能收益不。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值