altrun、wala功能合并简化脚本-对外公用版

;~ altrun、wala功能合并简化脚本,打开脚本后按热键alt+r启动主界面。用户可自行添加列表中的项目及对应的功能。
;~ 用户自行修改说明:
;~ 需自行修改的地方主要有以下3个:
;~ 一是添加修改AltrunList变量,可以依次自行列举自己的常用软件、功能等等,以顿号隔开。
;~ 二是添加修改AltrunList变量中各个项目对应的标签,以实现其功能,可以参照“金山快盘”等标签进行更改。
;~ 三是添加修改各种搜索引擎代码,及个人识别标志。



;#SingleInstance force ;只允许单个该脚本运行,脚本强制替换

AltrunList:= "金山快盘、百度云盘、360云盘、回收站、foobar2000、注册表、cmd"

!r::
	Gui, -SysMenu AlwaysOnTop  ;删除界面上的各种菜单和图标
	Gui, font, s12
	Gui, Add, Edit,w400 h20 x0 y0 vAltrunInputContent gAltrunSearch
	AltrunInputContent:= ""
	Gui, Add, ListView, r11 w400 x0 y20 Count 20 -Hdr  ,11|22222222222222222222222
	gosub, AltrunLoad
	Gui, Show,w400 h193,AltrunInputGui
	ControlFocus,edit1,AltrunInputGui ahk_class AutoHotkeyGUI
	;DllCall("SendMessage" , UInt, DllCall("imm32ImmGetDefaultIMEWnd", Uint,ahk_class AutoHotkeyGUI), UInt, 0x0283   ,  Int, 0x002  ,  Int, 0x00)   ;切换成英文
	OnMessage(0x86,"AltrunInputGuiLostFocus")
return
	
#IfWinActive AltrunInputGui ahk_class AutoHotkeyGUI
esc::
!r::
;Space & r::
	OnMessage(0x86, "")
	AltrunListSelected:= AltrunInputContent:= isbreak:= AltrunPinyinVar:= ""
	Gui, Destroy
return

CapsLock::
Enter::
	OnMessage(0x86, "")
	Gui, Submit  ;将编辑框的内容保存到v变量名中(AltrunInputContent),并隐藏窗口
	if LV_GetNext()
	{
		LV_GetText(AltrunListSelected, LV_GetNext(), 2)
		Gosub,%AltrunListSelected%
		Sleep,200
	}
	Else
	{
		AltrunInputContent:= Trim(AltrunInputContent)
		if RegExMatch(AltrunInputContent, "^www" )   ;网址
			Run %AltrunInputContent%
		else if RegExMatch(AltrunInputContent, "^bk" )   ;百度百科
			Run,% "http://baike.baidu.com/searchword/?pic=1&sug=1&oq=s&clk=1&rsp=0&word=" . SubStr(AltrunInputContent, 3 )
		else if RegExMatch(AltrunInputContent, "^tb" )   ;淘宝
			Run,% "http://search.taobao.com/search?commend=all&isnew=2&q=" . SubStr(AltrunInputContent, 3 )
		else if RegExMatch(AltrunInputContent, "^jd" )   ;京东
			Run,% "http://search.jd.com/search?enc=utf-8&area=19&keyword=" . SubStr(AltrunInputContent, 3 )
		else if RegExMatch(AltrunInputContent, "^hs" )   ;360好搜
			Run,% "http://so.360.cn/s?q=" . SubStr(AltrunInputContent, 3 )
		else
			Run,www.baidu.com/s?wd=%AltrunInputContent%
		Sleep, 200
	}
	AltrunListSelected:= AltrunInputContent:= isbreak:= AltrunPinyinVar:= ""
	Gui, Destroy
Return



金山快盘:
MsgBox, 金山快盘。示例,功能请自行添加修改。
return
百度云盘:
MsgBox, 百度云盘。示例,功能请自行添加修改。
return
360云盘:
MsgBox, 360云盘。示例,功能请自行添加修改。
return
foobar2000:
MsgBox, foobar2000。示例,功能请自行添加修改。
return
回收站:
Run ::{645ff040-5081-101b-9f08-00aa002f954e}  ; 打开回收站.
Return
注册表:
run,regedit.exe
Return
cmd:
run,cmd.exe
Return

AltrunLoad:
	GuiControl, -Redraw, SysListView321  ; 在加载时禁用重绘来提升性能
	isbreak := false
	LV_Delete()
	loop, parse, AltrunList , 、
		LV_Add("", a_index, A_loopfield)
	GuiControl, +Redraw, SysListView321
	LV_ModifyCol(1, "Integer")  ;为了进行排序, 指明第一列为整数
	LV_ModifyCol(1, "Sort")  ;立即对第一列按升序排列
	LV_Modify(1, "Select")  ;选择第一行
return

AltrunSearch:
	Critical  ;防止当前线程被其他线程中断。
	GuiControl, -Redraw,SysListView321
	isbreak := true
	Gui, Submit , NoHide   ;将编辑框的内容保存到v变量名中(AltrunInputContent)
	if not strlen(AltrunInputContent)
	{
		gosub,AltrunLoad
		return
	}
	isbreak := false
	LV_Delete()
	AltrunPinyinVar := zh2pyRegexList(AltrunList, AltrunInputContent,"、")
	loop, % AltrunPinyinVar.maxindex()
	{
		if isbreak
			break
		LV_Add("",a_index, AltrunPinyinVar[a_index].string)
	}
	LV_Modify(1, "Select")
	GuiControl, +Redraw, SysListView321
	Critical,off
	LV_ModifyCol(1, "Integer")  ;为了进行排序, 指明第一列为整数
	LV_ModifyCol(1, "Sort")  ;立即对第一列按升序排列
	LV_Modify(1, "Select")  ;选择第一行
return


AltrunInputGuiLostFocus(wParam){
    if(wParam=0)
	{
        Gui, Destroy
		OnMessage(0x86, "")
		}
}
zh2pyRegexList(ListString, RegexString,ListStringFenGeFu)
{
    global zh2pyLocation
    ObjRegexList := {}
    ObjRegex := {}
    ObjStringReturn := {}
    idx := 1
	  Loop, Parse, RegexString , %A_Space%
	  {
        ObjRegex := {}
				Loop, parse, A_Loopfield
						ObjRegex[a_index] := A_loopfield
        ObjRegexList[a_index] := ObjRegex
	  }
    Loop, Parse, ListString, %ListStringFenGeFu%
		{
        thisLine := A_loopfield
		    ObjString := zh2py(thisLine)
        ObjLocateTemp := {}
        Loop, % ObjRegexList.MaxIndex()
        {
            TrueLine := True
            if zh2pyRegex(ObjString, ObjRegexList[a_index])
            {
                LocationError := False 
                pos := {}
                pos["start"] := zh2pyLocation + 1
                pos["End"]   := zh2pyLocation + ObjRegexList[a_index].MaxIndex() 
/*
								;msgbox % "Loop:`n" Json.Stringify(ObjString) "`n"  Json.Stringify(ObjRegexList[a_index])  "`n" pos.start "`n" pos.end "`n" rPos.start "`n" rPos.End
                Loop, % ObjLocateTemp.MaxIndex()
                {
                    rPos := ObjLocateTemp[a_Index]    
                    if (pos.start >= rPos.start) and (pos.start = rPos.start) and (pos.End = Max)
					break
      Lchar := Tchar
	}
  zh2pyLocation := idx-ObjRegex.MaxIndex()
	return (Location >= Max)
}

; 从 php 转换而来的 (http://www.sjyhome.com/php/201311170606.html)
; http://ahkscript.org/boards/viewtopic.php?f=27&t=1629
; 作者: tmplinshi , 修改: Array
; 返回一个数组,整数序列,每个元素的内容为拼音首字母,或者对象
zh2py(str)
{
		; 根据汉字区位表,(http://www.mytju.com/classcode/tools/QuWeiMa_FullList.asp)
		; 我们可以看到从16-55区之间是按拼音字母排序的,所以我们只需要判断某个汉字的区位码就可以得知它的拼音首字母.

		; 区位表第一部份,按拼音字母排序的.
		; 16区-55区
		/*
				'A'=>0xB0A1, 'B'=>0xB0C5, 'C'=>0xB2C1, 'D'=>0xB4EE, 'E'=>0xB6EA, 'F'=>0xB7A2, 'G'=>0xB8C1,'H'=>0xB9FE,
				'J'=>0xBBF7, 'K'=>0xBFA6, 'L'=>0xC0AC, 'M'=>0xC2E8, 'N'=>0xC4C3, 'O'=>0xC5B6, 'P'=>0xC5BE,'Q'=>0xC6DA,
				'R'=>0xC8BB, 'S'=>0xC8F6, 'T'=>0xCBFA, 'W'=>0xCDDA, 'X'=>0xCEF4, 'Y'=>0xD1B9, 'Z'=>0xD4D1
		*/
		static FirstTable  := [ 0xB0C5, 0xB2C1, 0xB4EE, 0xB6EA, 0xB7A2, 0xB8C1, 0xB9FE, 0xBBF7, 0xBFA6, 0xC0AC, 0xC2E8
													, 0xC4C3, 0xC5B6, 0xC5BE, 0xC6DA, 0xC8BB, 0xC8F6, 0xCBFA, 0xCDDA, 0xCEF4, 0xD1B9, 0xD4D1, 0xD7FA ]
		static FirstLetter := StrSplit("ABCDEFGHJKLMNOPQRSTWXYZ")
		
		Static pym 
    
    if not IsObject(pym)
        pym := LoadPyMulti()

		; 区位表第二部份,不规则的,下面的字母是每个区里面对应字的拼音首字母.从网上查询整理出来的,可能会有部份错误.
		; 56区-87区
		static SecondTable := [ StrSplit("CJWGNSPGCGNEGYPBTYYZDXYKYGTZJNMJQMBSGZSCYJSYYFPGKBZGYDYWJKGKLJSWKPJQHYJWRDZLSYMRYPYWWCCKZNKYYG")
													, StrSplit("TTNGJEYKKZYTCJNMCYLQLYPYSFQRPZSLWBTGKJFYXJWZLTBNCXJJJJTXDTTSQZYCDXXHGCKBPHFFSSTYBGMXLPBYLLBHLX")
													, StrSplit("SMZMYJHSOJNGHDZQYKLGJHSGQZHXQGKXZZWYSCSCJXYEYXADZPMDSSMZJZQJYZCJJFWQJBDZBXGZNZCPWHWXHQKMWFBPBY")
													, StrSplit("DTJZZKXHYLYGXFPTYJYYZPSZLFCHMQSHGMXXSXJYQDCSBBQBEFSJYHWWGZKPYLQBGLDLCDTNMAYDDKSSNGYCSGXLYZAYPN")
													, StrSplit("PTSDKDYLHGYMYLCXPYCJNDQJWXQXFYYFJLEJPZRXCCQWQQSBZKYMGPLBMJRQCFLNYMYQMSQYRBCJTHZTQFRXQHXMQJCJLY")
													, StrSplit("QGJMSHZKBSWYEMYLTXFSYDXWLYCJQXSJNQBSCTYHBFTDCYZDJWYGHQFRXWCKQKXEBPTLPXJZSRMEBWHJLBJSLYYSMDXLCL")
													, StrSplit("QKXLHXJRZJMFQHXHWYWSBHTRXXGLHQHFNMGYKLDYXZPYLGGSMTCFBAJJZYLJTYANJGBJPLQGSZYQYAXBKYSECJSZNSLYZH")
													, StrSplit("ZXLZCGHPXZHZNYTDSBCJKDLZAYFFYDLEBBGQYZKXGLDNDNYSKJSHDLYXBCGHXYPKDJMMZNGMMCLGWZSZXZJFZNMLZZTHCS")
													, StrSplit("YDBDLLSCDDNLKJYKJSYCJLKWHQASDKNHCSGAGHDAASHTCPLCPQYBSZMPJLPCJOQLCDHJJYSPRCHNWJNLHLYYQYYWZPTCZG")
													, StrSplit("WWMZFFJQQQQYXACLBHKDJXDGMMYDJXZLLSYGXGKJRYWZWYCLZMSSJZLDBYDCFCXYHLXCHYZJQSQQAGMNYXPFRKSSBJLYXY")
													, StrSplit("SYGLNSCMHCWWMNZJJLXXHCHSYZSTTXRYCYXBYHCSMXJSZNPWGPXXTAYBGAJCXLYXDCCWZOCWKCCSBNHCPDYZNFCYYTYCKX")
													, StrSplit("KYBSQKKYTQQXFCMCHCYKELZQBSQYJQCCLMTHSYWHMKTLKJLYCXWHEQQHTQKZPQSQSCFYMMDMGBWHWLGSLLYSDLMLXPTHMJ")
													, StrSplit("HWLJZYHZJXKTXJLHXRSWLWZJCBXMHZQXSDZPSGFCSGLSXYMJSHXPJXWMYQKSMYPLRTHBXFTPMHYXLCHLHLZYLXGSSSSTCL")
													, StrSplit("SLDCLRPBHZHXYYFHBMGDMYCNQQWLQHJJCYWJZYEJJDHPBLQXTQKWHLCHQXAGTLXLJXMSLJHTZKZJECXJCJNMFBYCSFYWYB")
													, StrSplit("JZGNYSDZSQYRSLJPCLPWXSDWEJBJCBCNAYTWGMPAPCLYQPCLZXSBNMSGGFNZJJBZSFZYNTXHPLQKZCZWALSBCZJXSYZGWK")
													, StrSplit("YPSGXFZFCDKHJGXTLQFSGDSLQWZKXTMHSBGZMJZRGLYJBPMLMSXLZJQQHZYJCZYDJWFMJKLDDPMJEGXYHYLXHLQYQHKYCW")
													, StrSplit("CJMYYXNATJHYCCXZPCQLBZWWYTWBQCMLPMYRJCCCXFPZNZZLJPLXXYZTZLGDLTCKLYRZZGQTTJHHHJLJAXFGFJZSLCFDQZ")
													, StrSplit("LCLGJDJZSNZLLJPJQDCCLCJXMYZFTSXGCGSBRZXJQQCTZHGYQTJQQLZXJYLYLBCYAMCSTYLPDJBYREGKLZYZHLYSZQLZNW")
													, StrSplit("CZCLLWJQJJJKDGJZOLBBZPPGLGHTGZXYGHZMYCNQSYCYHBHGXKAMTXYXNBSKYZZGJZLQJTFCJXDYGJQJJPMGWGJJJPKQSB")
													, StrSplit("GBMMCJSSCLPQPDXCDYYKYPCJDDYYGYWRHJRTGZNYQLDKLJSZZGZQZJGDYKSHPZMTLCPWNJYFYZDJCNMWESCYGLBTZZGMSS")
													, StrSplit("LLYXYSXXBSJSBBSGGHFJLYPMZJNLYYWDQSHZXTYYWHMCYHYWDBXBTLMSYYYFSXJCBDXXLHJHFSSXZQHFZMZCZTQCXZXRTT")
													, StrSplit("DJHNRYZQQMTQDMMGNYDXMJGDXCDYZBFFALLZTDLTFXMXQZDNGWQDBDCZJDXBZGSQQDDJCMBKZFFXMKDMDSYYSZCMLJDSYN")
													, StrSplit("SPRSKMKMPCKLGTBQTFZSWTFGGLYPLLJZHGJJGYPZLTCSMCNBTJBQFKDHBYZGKPBBYMTDSSXTBNPDKLEYCJNYCDYKZTDHQH")
													, StrSplit("SYZSCTARLLTKZLGECLLKJLQJAQNBDKKGHPJTZQKSECSHALQFMMGJNLYJBBTMLYZXDXJPLDLPCQDHZYCBZSCZBZMSLJFLKR")
													, StrSplit("ZJSNFRGJHXPDHYJYBZGDLQCSEZGXLBLGYXTWMABCHECMWYJYZLLJJYHLGNDJLSLYGKDZPZXJYYZLWCXSZFGWYYDLYHCLJS")
													, StrSplit("CMBJHBLYZLYCBLYDPDQYSXQZBYTDKYXJYYCNRJMPDJGKLCLJBCTBJDDBBLBLCZQRPYXJCJLZCSHLTOLJNMDDDLNGKATHQH")
													, StrSplit("JHYKHEZNMSHRPHQQJCHGMFPRXHJGDYCHGHLYRZQLCYQJNZSQTKQJYMSZSWLCFQQQXYFGGYPTQWLMCRNFKKFSYYLQBMQAMM")
													, StrSplit("MYXCTPSHCPTXXZZSMPHPSHMCLMLDQFYQXSZYJDJJZZHQPDSZGLSTJBCKBXYQZJSGPSXQZQZRQTBDKYXZKHHGFLBCSMDLDG")
													, StrSplit("DZDBLZYYCXNNCSYBZBFGLZZXSWMSCCMQNJQSBDQSJTXXMBLTXZCLZSHZCXRQJGJYLXZFJPHYMZQQYDFQJJLZZNZJCDGZYG")
													, StrSplit("CTXMZYSCTLKPHTXHTLBJXJLXSCDQXCBBTJFQZFSLTJBTKQBXXJJLJCHCZDBZJDCZJDCPRNPQCJPFCZLCLZXZDMXMPHJSGZ")
													, StrSplit("GSZZQLYLWTJPFSYASMCJBTZYYCWMYTZSJJLJCQLWZMALBXYFBPNLSFHTGJWEJJXXGLLJSTGSHJQLZFKCGNNNSZFDEQFHBS")
													, StrSplit("AQTGYLBXMMYGSZLDYDQMJJRGBJTKGDHGKBLQKBDMBYLXWCXYTTYBKMRTJZXQJBHLMHMJJZMQASLDCYXYQDLQCAFYWYXQHZ") ]


		static nothing := VarSetCapacity(var, 2)
		
    ObjStr := {}
		; 如果不包含中文字符,则直接返回原字符
	  if not RegExMatch(str,"[^x00-xff]")
    {
        Loop, Parse, Str
            ObjStr[A_Index] := A_Loopfield
		    return Objstr
    }

		;if ( Asc(str)  0x9FFF )
		;    Return str
		
		Loop, Parse, str
		{
				StrPut(A_LoopField, &var, "CP936")
				H := NumGet(var, 0, "UChar")
				L := NumGet(var, 1, "UChar")
        
        idx := a_index
        char := A_loopfield
				
				; 字符集非法
				if (H  0xF7 || L = 0xFF)
				{
						;newStr .= A_loopfield
            ObjStr[idx] := char
						Continue
				}
				; 多音字
				if (mstr := pym[asc(A_Loopfield)]) 
				{
						;newStr .= "[" mstr "]"
            ObjMulti := {}
            Loop, Parse, mstr
                ObjMulti[a_index] := A_loopfield
            ObjStr[idx] := ObjMulti
						Continue
				}
				
				if (H = 0xB0 && H = 0xD8 && H 

给TA捐赠
共{{data.count}}人
人已捐赠
其他

ahk错误在浏览器地址栏中不完全删除编码.

2020-3-24 23:09:30

其他案例

altrun简化版

2020-3-25 13:52:38

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索