自定义快捷操作

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 声明:
;;; 1、用KeyTweak改键盘映射,capslock改为Numpad0了,否则做快捷键总是激活大小写
;;; 切换,很烦
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;-------------------------------------------------------------------------------
;~ 脚本配置 #Include等
;-------------------------------------------------------------------------------
{
	;提升性能相关的配置
	#NoEnv						;不检查空变量是否为环境变量
	;#KeyHistory 0				;不记录击键log
	;ListLines Off				;不记录击键log
	SetBatchLines, -1			;行之间运行不留时间空隙,默认是有10ms的间隔
	SetKeyDelay, -1, -1			;发送按键不留时间空隙
	SetMouseDelay, -1			;每次鼠标移动或点击后自动的延时=0   
	SetDefaultMouseSpeed, 0		;设置在 Click 和 MouseMove/Click/Drag 中没有指定鼠标速度时使用的速度 = 瞬间移动.
	;如果以前录制的脚本,因延时变短,出问题,命令 MouseClick, MouseMove 和 MouseClickDrag 都提供了一个用来设置鼠标速度代替默认速度的参数.用它们自己的参数,设定移动速度
	SetWinDelay, 0
	SetControlDelay, 0
	SendMode Input				;据说SendInput is the fastest send method.
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

	#Include %A_LineFile%....FunctionsWinClipWinClipAPI.ahk
	#Include %A_LineFile%....FunctionsWinClipWinClip.ahk
	;#Include %A_LineFile%....Functionsurl_encode_decode.ahk	;该脚本必须以ANSI运行
	#Include %A_LineFile%....FunctionsTrayIcon by FanaticGuru.ahk

	SetTitleMatchMode Regex	;更改进程匹配模式为正则
	#SingleInstance ignore	;决定当脚本已经运行时是否允许它再次运行。
	#Persistent				;持续运行不退出
	#MaxThreadsPerHotkey 5
	CoordMode, Mouse, Client	;鼠标坐标采用Client模式
	;SetCapsLockState,AlwaysOff
	CountStp := 0	;一键多用的计时器

	Menu, Tray, Icon, %A_LineFile%..Icon自定义快捷操作.ico, , 1
	Menu, tray, tip, 自定义快捷键、自动保存 by LL
	TrayTip, 提示, 脚本已启动, , 1
	Sleep, 1000
	TrayTip
	;return		;注:这里不能加return  原因搜索帮助文件的「自动执行段」

	;最近不怎么用snagit了,先去掉这行
	;Run, d:BaiduYun@SoftwareAHKScript_MyScript非快捷键类 全局运行脚本(由开机脚本自动调用).ahk

	;注意:menu菜单的定义,必须在“自动执行段”
	Menu, LangRenMenu, Add, 大厅中找房, 找狂欢版语音
	Menu, LangRenMenu, Add, 占座#9, 占座#9
	Menu, LangRenMenu, Add, 占座#10, 占座#10
	Menu, LangRenMenu, Add, 占座#18, 占座#18
	Menu, LangRenMenu, Add			; 添加分隔线
	Menu, LangRenMenu, Add, &F:快速第一个投票, 快速第一个投票
	Menu, LangRenMenu, Add, &B:全场标记村民, 全场标记村民
	Menu, LangRenMenu, Add			; 添加分隔线
	Menu, LangRenMenu, Add, &1:【踩人】, 找狼不积极
	Menu, LangRenMenu, Add, &2:【踩错不担责】, 踩错声明
	Menu, LangRenMenu, Add, &3:【先知y熊n】, 问先知熊
	Menu, LangRenMenu, Add, &4:【问归】, 问归
	Menu, LangRenMenu, Add, &5:【没时间思考】, 第一个发言没时间
	Menu, LangRenMenu, Add, &6:【不归票】, 局势焦灼

}

;-------------------------------------------------------------------------------
;~ 预处理部分
;-------------------------------------------------------------------------------
{
	;控制当前运行是Unicode64版,若不是则切换 (U64比U32运行更快,尽量用U64)
	SplitPath A_AhkPath,, AhkDir
	If ( !(A_PtrSize = 8 && A_IsUnicode ) ) {
		U64 := AhkDir . "AutoHotkeyU64.exe"
		If (FileExist(U64)) {
			Run %U64% %A_LineFile%
			ExitApp
		} Else {
			MsgBox 0x2010, AutoGUI, AutoHotkey 64-bit Unicode not found.
			ExitApp
		}
	}
}

;-------------------------------------------------------------------------------
;~ 函数部分
;-------------------------------------------------------------------------------
{
	;Get memory usage of Process 获取一个进程的内存占用 → 用于监控Firefox内存
	MemUsage(ProcName, Units="K") {
		Process, Exist, %ProcName%
		pid := Errorlevel

		; get process handle
		hProcess := DllCall( "OpenProcess", UInt, 0x10|0x400, Int, false, UInt, pid )

		; get memory info
		PROCESS_MEMORY_COUNTERS_EX := VarSetCapacity(memCounters, 44, 0)
		DllCall( "psapi.dllGetProcessMemoryInfo", UInt, hProcess, UInt, &memCounters, UInt, PROCESS_MEMORY_COUNTERS_EX )
		DllCall( "CloseHandle", UInt, hProcess )

		SetFormat, Float, 0.0 ; round up K

		PrivateBytes := NumGet(memCounters, 40, "UInt")
		if (Units == "B")
			return PrivateBytes
		if (Units == "K")
			Return PrivateBytes / 1024
		if (Units == "M")
			Return PrivateBytes / 1024 / 1024
	}

	;-----------------------------------------
	; 查找屏幕文字/图像字符串及OCR识别
	; 注意:参数中的x、y为中心点坐标,w、h为左右上下偏移
	; cha1、cha0分别为0、_字符的容许减少百分比
	;-----------------------------------------
	查找文字(x,y,wz,c,w=150,h=150,ByRef rx="",ByRef ry=""
	  ,ByRef ocr="",cha1=0,cha0=0,id="")
	{
	  ; 获取包含所有显示器的虚拟屏幕范围
	  SysGet, zx, 76
	  SysGet, zy, 77
	  SysGet, zw, 78
	  SysGet, zh, 79
	  left:=x-w, right:=x+w, up:=y-h, down:=y+h
	  left:=leftzx+zw-1 ? zx+zw-1:right
	  up:=upzy+zh-1 ? zy+zh-1:down
	  x:=left, y:=up, w:=right-left+1, h:=down-up+1
	  if (wzx ? x:zx, y1:=y>zy ? y:zy
		x2:=(x+w-1)0 and sh>0)
	  {
		hDC2:=DllCall("GetWindowDC", Ptr,id, Ptr)
		mDC2:=DllCall("CreateCompatibleDC", Ptr,hDC2, Ptr)
		hBM2:=DllCall("CreateCompatibleBitmap", Ptr,hDC2
		  , "int",zw, "int",zh, Ptr)
		oBM2:=DllCall("SelectObject", Ptr,mDC2, Ptr,hBM2, Ptr)
		DllCall("PrintWindow", Ptr,id, Ptr,mDC2, "int",0)
		DllCall("BitBlt", Ptr,mDC
		  , "int",x1-x, "int",y1-y, "int",sw, "int",sh, Ptr,mDC2
		  , "int",x1-zx, "int",y1-zy, "uint",0x00CC0020)
		DllCall("SelectObject", Ptr,mDC2, Ptr,oBM2)
		DllCall("DeleteObject", Ptr,hBM2)
		DllCall("DeleteDC", Ptr,mDC2)
		DllCall("ReleaseDC", Ptr,id, Ptr,hDC2)
	  }
	  VarSetCapacity(bi, 40, 0)
	  NumPut(40, bi, 0, "int"), NumPut(w, bi, 4, "int")
	  NumPut(-h, bi, 8, "int"), NumPut(1, bi, 12, "short")
	  NumPut(bpp:=32, bi, 14, "short"), NumPut(0, bi, 16, "int")
	  DllCall("GetDIBits", Ptr,mDC, Ptr,hBM
		, "int",0, "int",h, Ptr,&bits, Ptr,&bi, "int",0)
	  DllCall("SelectObject", Ptr,mDC, Ptr,oBM)
	  DllCall("DeleteObject", Ptr,hBM)
	  DllCall("DeleteDC", Ptr,mDC)
	  Scan0:=&bits, Stride:=((w*bpp+31)//32)*4
	}

	;-----------------------------------------
	; 图像内查找文字/图像字符串及OCR函数
	;-----------------------------------------
	PicOCR(Scan0, Stride, sx, sy, sw, sh, wenzi, c
	  , ByRef rx, ByRef ry, ByRef ocr, cha1, cha0)
	{
	  static MyFunc
	  if !MyFunc
	  {
		x32:="5589E55383EC608B45200FAF45188B551CC1E20201D0894"
		. "5F08B5524B80000000029D0C1E00289C28B451801D08945ECC"
		. "745E800000000C745D400000000C745D0000000008B4524894"
		. "5CC8B45288945C8C745C400000000837D08000F85B20000008"
		. "B450CC1E81025FF0000008945C08B450CC1E80825FF0000008"
		. "945BC8B450C25FF0000008945B8C745F400000000EB75C745F"
		. "800000000EB5A8B45F083C00289C28B451401D00FB6000FB6C"
		. "03B45C075368B45F083C00189C28B451401D00FB6000FB6C03"
		. "B45BC751E8B55F08B451401D00FB6000FB6C03B45B8750B8B5"
		. "5E88B453001D0C600318345F8018345F0048345E8018B45F83"
		. "B45247C9E8345F4018B45EC0145F08B45F43B45287C83E9170"
		. "20000837D08010F85A30000008B450C83C001C1E00789450CC"
		. "745F400000000EB7DC745F800000000EB628B45F083C00289C"
		. "28B451401D00FB6000FB6C06BD0268B45F083C00189C18B451"
		. "401C80FB6000FB6C06BC04B8D0C028B55F08B451401D00FB60"
		. "00FB6D089D0C1E00429D001C83B450C730B8B55E88B453001D"
		. "0C600318345F8018345F0048345E8018B45F83B45247C96834"
		. "5F4018B45EC0145F08B45F43B45280F8C77FFFFFFE96A01000"
		. "0C745F400000000EB7BC745F800000000EB608B55E88B452C8"
		. "D0C028B45F083C00289C28B451401D00FB6000FB6C06BD0268"
		. "B45F083C00189C38B451401D80FB6000FB6C06BC04B8D1C028"
		. "B55F08B451401D00FB6000FB6D089D0C1E00429D001D8C1F80"
		. "788018345F8018345F0048345E8018B45F83B45247C988345F"
		. "4018B45EC0145F08B45F43B45280F8C79FFFFFF8B452483E80"
		. "18945B48B452883E8018945B0C745F401000000E9B0000000C"
		. "745F801000000E9940000008B45F40FAF452489C28B45F801D"
		. "08945E88B55E88B452C01D00FB6000FB6D08B450C01D08945E"
		. "C8B45E88D50FF8B452C01D00FB6000FB6C03B45EC7F488B45E"
		. "88D50018B452C01D00FB6000FB6C03B45EC7F328B45E82B452"
		. "489C28B452C01D00FB6000FB6C03B45EC7F1A8B55E88B45240"
		. "1D089C28B452C01D00FB6000FB6C03B45EC7E0B8B55E88B453"
		. "001D0C600318345F8018B45F83B45B40F8C60FFFFFF8345F40"
		. "18B45F43B45B00F8C44FFFFFFC745E800000000E9E30000008"
		. "B45E88D1485000000008B454001D08B008945E08B45E08945E"
		. "48B45E48945F08B45E883C0018D1485000000008B454001D08"
		. "B008945B48B45E883C0028D1485000000008B454001D08B008"
		. "945B0C745F400000000EB7CC745F800000000EB678B45F08D5"
		. "0018955F089C28B453401D00FB6003C3175278B45E48D50018"
		. "955E48D1485000000008B453801C28B45F40FAF452489C18B4"
		. "5F801C88902EB258B45E08D50018955E08D1485000000008B4"
		. "53C01C28B45F40FAF452489C18B45F801C889028345F8018B4"
		. "5F83B45B47C918345F4018B45F43B45B00F8C78FFFFFF8345E"
		. "8078B45E83B45440F8C11FFFFFF8B45D00FAF452489C28B45D"
		. "401D08945F08B45240FAF45C8BA0100000029C289D08945E4C"
		. "745F800000000E9B5020000C745F400000000E993020000C74"
		. "5E800000000E9710200008B45E883C0018D1485000000008B4"
		. "54001D08B008945B48B45E883C0028D1485000000008B45400"
		. "1D08B008945B08B55F88B45B401D03B45CC0F8F2D0200008B5"
		. "5F48B45B001D03B45C80F8F1C0200008B45E88D14850000000"
		. "08B454001D08B008945E08B45E883C0038D1485000000008B4"
		. "54001D08B008945AC8B45E883C0048D1485000000008B45400"
		. "1D08B008945A88B45E883C0058D1485000000008B454001D08"
		. "B008945DC8B45E883C0068D1485000000008B454001D08B008"
		. "945D88B45AC3945A80F4D45A88945A4C745EC00000000E9820"
		. "000008B45EC3B45AC7D378B55E08B45EC01D08D14850000000"
		. "08B453801D08B108B45F001D089C28B453001D00FB6003C317"
		. "40E836DDC01837DDC000F884E0100008B45EC3B45A87D378B5"
		. "5E08B45EC01D08D1485000000008B453C01D08B108B45F001D"
		. "089C28B453001D00FB6003C30740E836DD801837DD8000F881"
		. "20100008345EC018B45EC3B45A40F8C72FFFFFF837DC4000F8"
		. "5840000008B551C8B45F801C28B454889108B454883C0048B4"
		. "D208B55F401CA89108B45488D50088B45B489028B45488D500"
		. "C8B45B08902C745C4040000008B45F42B45B08945D08B55B08"
		. "9D001C001D08945C88B55B089D0C1E00201D001C083C064894"
		. "5CC837DD0007907C745D0000000008B45282B45D03B45C87D2"
		. "E8B45282B45D08945C8EB238B45F83B45107E1B8B45C48D500"
		. "18955C48D1485000000008B454801D0C700FFFFFFFF8B45C48"
		. "D50018955C48D1485000000008B454801D08B55E883C207891"
		. "0817DC4FD0300007F788B55F88B45B401D00145D48B45242B4"
		. "5D43B45CC0F8D60FDFFFF8B45242B45D48945CCE952FDFFFF9"
		. "0EB0490EB01908345E8078B45E83B45440F8C83FDFFFF8345F"
		. "4018B45240145F08B45F43B45C80F8C61FDFFFF8345F8018B4"
		. "5E40145F08B45F83B45CC0F8C3FFDFFFF837DC4007508B8000"
		. "00000EB1B908B45C48D1485000000008B454801D0C70000000"
		. "000B80100000083C4605B5DC2440090"
		x64:="554889E54883EC60894D10895518448945204C894D288B4"
		. "5400FAF45308B5538C1E20201D08945F48B5548B8000000002"
		. "9D0C1E00289C28B453001D08945F0C745EC00000000C745D80"
		. "0000000C745D4000000008B45488945D08B45508945CCC745C"
		. "800000000837D10000F85C90000008B4518C1E81025FF00000"
		. "08945C48B4518C1E80825FF0000008945C08B451825FF00000"
		. "08945BCC745F800000000E985000000C745FC00000000EB6A8"
		. "B45F483C0024863D0488B45284801D00FB6000FB6C03B45C47"
		. "5438B45F483C0014863D0488B45284801D00FB6000FB6C03B4"
		. "5C075288B45F44863D0488B45284801D00FB6000FB6C03B45B"
		. "C75108B45EC4863D0488B45604801D0C600318345FC018345F"
		. "4048345EC018B45FC3B45487C8E8345F8018B45F00145F48B4"
		. "5F83B45500F8C6FFFFFFFE959020000837D10010F85B600000"
		. "08B451883C001C1E007894518C745F800000000E98D000000C"
		. "745FC00000000EB728B45F483C0024863D0488B45284801D00"
		. "FB6000FB6C06BD0268B45F483C0014863C8488B45284801C80"
		. "FB6000FB6C06BC04B8D0C028B45F44863D0488B45284801D00"
		. "FB6000FB6D089D0C1E00429D001C83B451873108B45EC4863D"
		. "0488B45604801D0C600318345FC018345F4048345EC018B45F"
		. "C3B45487C868345F8018B45F00145F48B45F83B45500F8C67F"
		. "FFFFFE999010000C745F800000000E98D000000C745FC00000"
		. "000EB728B45EC4863D0488B4558488D0C028B45F483C002486"
		. "3D0488B45284801D00FB6000FB6C06BD0268B45F483C0014C6"
		. "3C0488B45284C01C00FB6000FB6C06BC04B448D04028B45F44"
		. "863D0488B45284801D00FB6000FB6D089D0C1E00429D04401C"
		. "0C1F80788018345FC018345F4048345EC018B45FC3B45487C8"
		. "68345F8018B45F00145F48B45F83B45500F8C67FFFFFF8B454"
		. "883E8018945B88B455083E8018945B4C745F801000000E9CA0"
		. "00000C745FC01000000E9AE0000008B45F80FAF454889C28B4"
		. "5FC01D08945EC8B45EC4863D0488B45584801D00FB6000FB6D"
		. "08B451801D08945F08B45EC4898488D50FF488B45584801D00"
		. "FB6000FB6C03B45F07F538B45EC4898488D5001488B4558480"
		. "1D00FB6000FB6C03B45F07F388B45EC2B45484863D0488B455"
		. "84801D00FB6000FB6C03B45F07F1D8B55EC8B454801D04863D"
		. "0488B45584801D00FB6000FB6C03B45F07E108B45EC4863D04"
		. "88B45604801D0C600318345FC018B45FC3B45B80F8C46FFFFF"
		. "F8345F8018B45F83B45B40F8C2AFFFFFFC745EC00000000E90"
		. "D0100008B45EC4898488D148500000000488B8580000000480"
		. "1D08B008945E48B45E48945E88B45E88945F48B45EC4898488"
		. "3C001488D148500000000488B85800000004801D08B008945B"
		. "88B45EC48984883C002488D148500000000488B85800000004"
		. "801D08B008945B4C745F800000000E989000000C745FC00000"
		. "000EB748B45F48D50018955F44863D0488B45684801D00FB60"
		. "03C31752C8B45E88D50018955E84898488D148500000000488"
		. "B45704801C28B45F80FAF454889C18B45FC01C88902EB2A8B4"
		. "5E48D50018955E44898488D148500000000488B45784801C28"
		. "B45F80FAF454889C18B45FC01C889028345FC018B45FC3B45B"
		. "87C848345F8018B45F83B45B40F8C6BFFFFFF8345EC078B45E"
		. "C3B85880000000F8CE4FEFFFF8B45D40FAF454889C28B45D80"
		. "1D08945F48B45480FAF45CCBA0100000029C289D08945E8C74"
		. "5FC00000000E929030000C745F800000000E907030000C745E"
		. "C00000000E9E20200008B45EC48984883C001488D148500000"
		. "000488B85800000004801D08B008945B88B45EC48984883C00"
		. "2488D148500000000488B85800000004801D08B008945B48B5"
		. "5FC8B45B801D03B45D00F8F8C0200008B55F88B45B401D03B4"
		. "5CC0F8F7B0200008B45EC4898488D148500000000488B85800"
		. "000004801D08B008945E48B45EC48984883C003488D1485000"
		. "00000488B85800000004801D08B008945B08B45EC48984883C"
		. "004488D148500000000488B85800000004801D08B008945AC8"
		. "B45EC48984883C005488D148500000000488B8580000000480"
		. "1D08B008945E08B45EC48984883C006488D148500000000488"
		. "B85800000004801D08B008945DC8B45B03945AC0F4D45AC894"
		. "5A8C745F000000000E9920000008B45F03B45B07D3F8B55E48"
		. "B45F001D04898488D148500000000488B45704801D08B108B4"
		. "5F401D04863D0488B45604801D00FB6003C31740E836DE0018"
		. "37DE0000F88790100008B45F03B45AC7D3F8B55E48B45F001D"
		. "04898488D148500000000488B45784801D08B108B45F401D04"
		. "863D0488B45604801D00FB6003C30740E836DDC01837DDC000"
		. "F88350100008345F0018B45F03B45A80F8C62FFFFFF837DC80"
		. "00F85970000008B55388B45FC01C2488B85900000008910488"
		. "B85900000004883C0048B4D408B55F801CA8910488B8590000"
		. "000488D50088B45B88902488B8590000000488D500C8B45B48"
		. "902C745C8040000008B45F82B45B48945D48B55B489D001C00"
		. "1D08945CC8B55B489D0C1E00201D001C083C0648945D0837DD"
		. "4007907C745D4000000008B45502B45D43B45CC7D368B45502"
		. "B45D48945CCEB2B8B45FC3B45207E238B45C88D50018955C84"
		. "898488D148500000000488B85900000004801D0C700FFFFFFF"
		. "F8B45C88D50018955C84898488D148500000000488B8590000"
		. "0004801D08B55EC83C2078910817DC8FD0300007F7B8B55FC8"
		. "B45B801D00145D88B45482B45D83B45D00F8DEFFCFFFF8B454"
		. "82B45D88945D0E9E1FCFFFF90EB0490EB01908345EC078B45E"
		. "C3B85880000000F8C0FFDFFFF8345F8018B45480145F48B45F"
		. "83B45CC0F8CEDFCFFFF8345FC018B45E80145F48B45FC3B45D"
		. "00F8CCBFCFFFF837DC8007508B800000000EB23908B45C8489"
		. "8488D148500000000488B85900000004801D0C70000000000B"
		. "8010000004883C4605DC390909090909090909090"
		MCode(MyFunc, A_PtrSize=8 ? x64:x32)
	  }
	  ;--------------------------------------
	  ; 统计字库文字的个数和宽高,将解释文字存入数组并删除
	  ;--------------------------------------
	  wenzitab:=[], num:=0, wz:="", j:=""
	  fmt:=A_FormatInteger
	  SetFormat, IntegerFast, d    ; 正则表达式中要用十进制
	  Loop, Parse, wenzi, |
	  {
		v:=A_LoopField, txt:=""
		e1:=cha1, e0:=cha0
		; 用角括号输入每个字库字符串的识别结果文字
		if RegExMatch(v,"]*)>",r)
		  v:=StrReplace(v,r), txt:=r1
		; 可以用中括号输入每个文字的两个容差,以逗号分隔
		if RegExMatch(v,"[([^]]*)]",r)
		{
		  v:=StrReplace(v,r), r2:=""
		  StringSplit, r, r1, `,
		  e1:=r1, e0:=r2
		}
		; 记录每个文字的起始位置、宽、高、10字符的数量和容差
		v:=Trim(RegExReplace(v,"[^_0n]+"),"`n") . "`n"
		w:=InStr(v,"`n")-1, h:=StrLen(v)//(w+1)
		re:="[0_]{" w "}n"
		if (w>sw or h>sh or w)(.*?)(?=

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

自定义Chrome的User-agent模拟其他浏览器

2020-3-9 5:07:44

其他

自定义快捷键

2020-3-9 5:09:44

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