出纳经常要打款,打款信息经常别人微信发给你一坨,要复制名字账户,分行真的很麻烦,又恶心人,作为一个不用鼠标的人士,偶尔大一下款能恶心死,所以做了个能提取杂乱打款信息中的名字账户以及分行的小工具
比如你收到这样的地址
手动复制恶心死
用一个gif演示如何使用小工具
自己根据自己使用的银行适配一下粘贴到网银就可以实现一定的自动化了,下次在单位的时候做一个续集,适配中国银行和工商银行的页面自动粘贴
源码
;预处理指令和权限
#SingleInstance, Force
SendMode Input
SetWorkingDir, %A_ScriptDir%
SetBatchLines, -1
SetKeyDelay, -1
SetMouseDelay, -1
DetectHiddenWindows, Off
if !(A_IsAdmin || InStr(DllCall("GetCommandLine", "str"), ".exe"" /r"))
Run % "*RunAs " (s:=A_IsCompiled ? "" : A_AhkPath " /r ") """" A_ScriptFullPath """" (s ? "" : " /r")
;重启用的按键
button:=["复制杂乱的打款信息后逐步粘贴","复制杂乱的打款信息后分行显示"]
gui,+AlwaysOnTop
gui, font, s20, Verdana
For k,v in button
Gui Add, Button, y+5 h20 g%v% ,%v%
gui Show, NoActivate,打款增强
Return
复制杂乱的打款信息后分行显示:
Gosub,信息提取
text=
(
%公司名称%
%银行账号%
%分行%
)
SetResizeEditGui("提取信息",text,,,8,False)
Return
复制杂乱的打款信息后逐步粘贴:
Gosub,信息提取
Clipboard:="" , Clipboard:=公司名称
MsgBox, 4096, 已复制公司名称, 已复制公司名称`,粘贴后再确定
Clipboard:="" , Clipboard:=银行账号
MsgBox, 4096, 已复制银行账号, 已复制银行账号`,粘贴后再确定
Clipboard:="" , Clipboard:=分行
MsgBox, 4096, 已复制分行, 已复制分行`,粘贴后结束
Return
信息提取:
RegExMatch(Clipboard,"(账户名称:?).+?公司",公司名称)
公司名称:=RegExReplace(公司名称, "账户名称:?")
RegExMatch(clipboard, "(分行)?账号:?\d{16,20}", 银行账号)
银行账号:=RegExReplace(银行账号, "(分行)?账号:?")
RegExMatch(clipboard, "(开户行:?).+?分行", 分行)
分行:=RegExReplace(分行, "(开户行:?)")
Return
F12::
KeyWait, F1, T0.5
if (ErrorLevel = 1) {
MsgBox,,关闭,关闭,0.5
ExitApp
} else {
if (winc_presses > 0) {
winc_presses ++
Return
} winc_presses = 1
SetTimer KeyWinC1, -400
Return
KeyWinC1:
if (winc_presses = 1) {
MsgBox,,重启,重启,0.5
Reload
} else if (winc_presses = 2) {
MsgBox,,暂停热键,暂停热键,0.5
Pause
} winc_presses = 0
Return
} Return
SetResizeEditGui(Title:="",Tip:="",Option:="",Width:=350,Row:=1,IsNumber:=False,ParentHwnd:=0){
Static EditBox
SysGet, CXVSCROLL, 2
SysGet, SM_CYSIZE, 31
SysGet,SM_CYSIZEFRAME ,33
Gui, EGui:Destroy
IsNumber:=IsNumber?"Number":"",SubmitOk:=False
Option:=Option<>""?Option:"+Resize -MaximizeBox +LastFound -MinimizeBox AlwaysOnTop"
Gui, EGui: %Option% hWndhEGui
Gui, EGui:Font,s10 norm
Gui, EGui: add, Edit,x5 y5 w%Width% R%Row% %IsNumber% vEditBox hwndEBox WantTab +Wrap Lowercase,
if (Row>1&&Tip<>"")
GuiControl,EGui:,EditBox,% Tip
Else if (Row=1&&Tip<>"")
DllCall("user32\SendMessage", "ptr", EBox, "uint", EM_SETCUEBANNER:=0x1501, "int", true, "str", Tip, "int")
GuiControlGet,ebpos,EGui:Pos,EditBox
EditBoxWidth:=Row>1?ebposW+CXVSCROLL/A_ScreenDPI/96+10:ebposW+10,EditBoxHeight:=ebposH+10
Gui, EGui: Show,w%EditBoxWidth% h%EditBoxHeight%, % Title
Gui, EGui:+MinSize%EditBoxWidth%x%EditBoxHeight%
while !(SubmitOk){
if (!WinExist("ahk_id " ParentHwnd)&&ParentHwnd){
Gui, EGui:Destroy
Return
}Else{
continue
}
}
Gui, EGui: Submit, NoHide
Gui, EGui:Destroy
Return EditBox
EGuiGuiSize:
if A_Cursor In SizeNESW,SizeNS,SizeNWSE,SizeWE
{
ControlGetPos , X_Edit, Y_Edit, Width, Height, Edit1
GuiControl, EGui:move, Edit1,% "w" A_GuiWidth-10 " h" A_GuiHeight-10
}
Return
EGuiGuiClose:
SubmitOk:=True
Return
}
感谢分享,非常贴近工作实际