用AutoHotkey一键完成Xmind插入图片等功能

F5一键添加超链接(类型为主题),常规步骤:Ctrl_h打开窗口,点击【主题】,激活光标到输入框。

右Ctrl-i一键添加截取的图片,常规步骤是:打开画图→粘贴→保存图片为文件→Xmind里Ctrl-i→选择文件

右Ctrl-f一键添加截取的图片为附件,常规步骤是:打开画图→粘贴→保存图片为文件→Xmind里点击【插入】→点击【附件】→选择文件

保存图片用到了 IrfanView 的命令行功能。

F5:: ;创建超链接并切换到主题
Send, {Ctrl Down}h{Ctrl Up}
WinWaitActive 修改主题的超链接
ControlClick, X61 Y212
Send {Shift Down}{Tab}{Shift Up} ;激活输入框
Return

>^i:: ;插入图片
Send, {Ctrl Down}i{Ctrl Up}
TmpImageFile := A_Desktop . "\" . A_Now . ".png"
hyf_saveClipImage2File(TmpImageFile, IrfanView)
WinWaitActive Ahk_class #32770
hyf_sendByClip(TmpImageFile, "{Enter}")
Sleep, 1000
FileDelete,% TmpImageFile
Return

>^f:: ;添加附件:默认添加剪切板图片,长按添加TC当前选中的文件
Send, {Alt Down}i{Alt Up}a
Err := hyf_keyWaitXSJ(A_ThisLabel)
If Err ;长按RCtrl
{
    hyf_TCPost(conTC3)
    Sleep, 100
    If FileExist(Clipboard)
        Send, {Shift Down}{Ins}{Shift Up}{Enter}
    Else
    {
        WinClose A
        hyf_tooltip("没复制到文件")
    }
}
Else
{
    TmpImageFile := A_Desktop . "\" . A_Now . ".png"
    hyf_saveClipImage2File(TmpImageFile, IrfanView)
    WinWaitActive Ahk_class #32770
    Sleep 200
    hyf_sendByClip(TmpImageFile, "{Enter}")
}
Return

hyf_moveTo_Click(x, y, n := 1, m := "Window", t := 20) ;鼠标移动到x,y并点击n次  {{{3
{ ;m默认为Window坐标, t为移动后延迟点击
    tmp := A_CoordModeMouse
    If (tmp != m)
        CoordMode, Mouse, %m%
    MouseMove, x, y, 0
    Sleep, %t%
    If n
        Click %n%
    CoordMode, Mouse, %tmp%
}

hyf_saveClipImage2File(p, IrfanView) ;保存剪切板图片到p文件    {{{3
{ ;建议用32位
    RunWait,% IrfanView . " /clippaste /convert=" . p
}

hyf_sendByClip(str, k := "", mark := "") ;用剪切板发送字符串并按键(可选) {{{3
{ ;mark不为空,则不写入ClipTool
    If mark
    {
        ClipTool_MarkTmp := 1
        c := ClipboardAll
    }
    Clipboard := str
    While (Clipboard != str)
        Sleep 10
    Send, {Shift Down}{Ins}{Shift Up}
    Sleep 20
    If (k != "")
        Send %k%
    If mark
    {
        ClipTool_MarkTmp := 1
        Sleep 100
        Clipboard := c
    }
}

hyf_keyWaitXSJ(hk) ;等待热键的修饰键弹起,返回ErrorLevel(一般按住不放为1)   {{{3
{ ;仅支持<>^!#+开头的热键
    If (xsj := hyf_getXsjFromHotkey(hk))
    {
        KeyWait, %xsj%, T0.3
        Return ErrorLevel
    }
}

hyf_TCPost(n) ;TC中发送命令,2017复制文件名,2018为复制文件路径,2029复制目录路径 {{{3
{
    PostMessage, 1075, %n%, 0, , Ahk_class TTOTAL_CMD
    If ErrorLevel ;WinHide时会失败
    {
        WinShow Ahk_class TTOTAL_CMD
        PostMessage, 1075, %n%, 0, , Ahk_class TTOTAL_CMD
    }
}

hyf_tooltip(str, t := 1, ExitScript := 0, x := "", y := "")  ;提示t秒并自动消失   {{{3
{
    t *= 1000
    ToolTip, %str%, %x%, %y%
    SetTimer, hyf_removeToolTip, -%t%
    If ExitScript
    {
        Gui, Destroy
        Exit
    }
}

hyf_getXsjFromHotkey(hk)
{
    hk := LTrim(hk, "~*")
    If InStr(hk, " & ")
        Return StrSplit(hk, A_Space)[1]
    obj := {"<": "L", ">":"R", "^":"Ctrl", "+":"Shift", "!":"Alt", "#":"LWin"}
    c1 := SubStr(hk, 1, 1)
    If (c1 = "<" || c1 = ">")
    {
        r1 := obj[c1]
        c2 := SubStr(hk, 2, 1)
        If InStr("^!#+", c2)
            Return r1 . obj[c2]
        Else
            Return 0
    }
    Else If InStr("^!#+", c1)
        Return obj[c1]
    Return 0
}

hyf_removeToolTip() ;清除ToolTip {{{3
{
    ToolTip
}

 

posted @ 2017-09-12 00:27  火冷  阅读(912)  评论(5编辑  收藏  举报