用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 }