超级热键函数

喊话函数(喊话方式,喊话间隔=1000){
	Gui,ts:Minimize
	Sleep,200
	IniRead,喊话方式,喊话.ini,喊话设置,喊话方式,顺序 ;默认喊话方式为顺序
	IniRead,喊话类型,喊话.ini,喊话设置,喊话类型,按键示例 ;默认为发送按键示例
	IniRead,喊话类型,喊话.ini,喊话类型,%喊话类型%,0 ;默认喊话类型为0,防止未定义的喊话类型出现.
	IniRead,喊话间隔,喊话.ini,喊话设置,喊话间隔,1000 ;默认喊话间隔1秒.

	IniRead,数,喊话.ini,%喊话类型%
	StringSplit, 数量, 数, `n
	数量0 -=1
	i := 0
	loop {
		if (喊话方式="随机") {
			Random, 随机数, 0,%数量0%
			IniRead,喊话内容,喊话.ini,%喊话类型%,%随机数%
			延时发送(喊话内容)
			Sleep,%喊话间隔%
		}	else  {
			IniRead,喊话内容,喊话.ini,%喊话类型%,%i%
			延时发送(喊话内容)
			i +=1
			if ( i > 数量0) {
				i :=0
			}
			Sleep,%喊话间隔%
		}
	}
}

延时发送(源码,发送模式:="input"){
	起始位置 :=1
	正则式:= "i)(.*?){Sleep *(d+)}"
	StringLen,源码长度,源码
	loop  {
		匹配 := RegExMatch(源码, 正则式,匹配结果数组,起始位置)
		if (匹配==0) {
			break
		}
		;分析并取得下次搜索的起始位置
		StringLen,匹配长度,匹配结果数组
		起始位置 :=匹配+匹配长度
		;测试发送效果
		;SendInput,%匹配结果数组1%
		包含声音发送(匹配结果数组1)
		Sleep,%匹配结果数组2%
	}
	;以下判断是否执行完所有按键代码,因为有些按键代码后面没有延时。上面的循环无法处理
	剩余长度:=源码长度-起始位置+1
	if (剩余长度 > 0) {
		StringRight,剩余按键,源码,%剩余长度%
		;SendInput,%剩余按键%
		包含声音发送(剩余按键)
	}
}

包含声音发送(字符串,发送模式:="input"){
	起始位置 :=1
	正则式:= "i)(.*?){SoundBeep[,| ]*(d*)[,| ]*(d*)}"
	StringLen,字符串长度,字符串
	loop  {
		匹配 := RegExMatch(字符串, 正则式,匹配结果数组,起始位置)
		if (匹配==0) {
			break
		}
		;分析并取得下次搜索的起始位置
		StringLen,匹配长度,匹配结果数组
		起始位置 :=匹配+匹配长度
		;测试发送效果
		SendInput,%匹配结果数组1%
		if (匹配结果数组232767){
			匹配结果数组2:=32767
		}
		if (匹配结果数组3=="")  {
			匹配结果数组3:=150
		}
		SoundBeep,%匹配结果数组2%,%匹配结果数组3%
	}
	;以下判断是否执行完所有按键代码,因为有些按键代码后面没有延时。上面的循环无法处理
	剩余长度:=字符串长度-起始位置+1
	if (剩余长度 > 0) {
		StringRight,剩余按键,字符串,%剩余长度%
		SendInput,%剩余按键%
	}
}

更新界面(){
global
gui,main:Default
guicontrol,text,Edit_触发长按时间,%触发长按时间%
guicontrol,text,Edit_按键有效间隔,%按键有效间隔%
guicontrol,text,Edit_个人单击时长,%个人单击时长%
guicontrol,text,Edit_鼠标划动误差,%鼠标划动误差%
guicontrol,text,Edit_至少移动距离,%至少移动距离%
guicontrol,,Edit_斜向微调系数,%斜向微调系数%

guicontrol, ,Edit_两次按键间隔,%两次按键间隔%
guicontrol, ,Edit_按键持续时间,%按键持续时间%
guicontrol, ,Edit_鼠标点击延时,%鼠标点击延时%
}

保存配置(){
	
}

界面事件处理(){
global ;调用全局变量。否则获取不到全局变量的值
ToolTip,% A_GuiEvent
if (A_GuiControl="编辑配置" ) {
	run,notepad.exe 超级热键.ini
}else if(A_guicontrol="打开帮助") {
	run,notepad.exe 超级热键使用说明.txt
}else if(A_guicontrol="增加热键") {
	;ToolTip, 工具待完善中`,欢迎批评指正
	Gui,hGui:Submit,NoHide
	MsgBox, % "目前界面热键输入无法定义鼠标及win做前缀.如果需要请直接修改ini"
	写入内容:="单击="
	IniWrite,%写入内容%,超级热键.ini,%HKname%

}else if(A_guicontrol="删除热键") {
	ToolTip, 工具待完善中`,欢迎批评指正
}else if(A_guicontrol="保存配置") {
	ToolTip, 工具待完善中`,欢迎批评指正
}else{
	ToolTip, 工具待完善中`,欢迎批评指正
}

}

菜单事件处理(){

}

托盘事件处理(){
	if (A_ThisMenuItem="隐藏窗口"){
		menu,tray,Rename,隐藏窗口,显示窗口
		Gui, main:hide
	}else if (A_ThisMenuItem="显示窗口"){
		menu,tray,Rename,显示窗口,隐藏窗口
		gui,main:show
	}else if (A_ThisMenuItem="热键切换---Win+ESC"){
		send,#{esc}
	}else if (A_ThisMenuItem="帮助关于"){
		MsgBox,%shuoming%
	}else if (A_ThisMenuItem="退出脚本---ESC"){
		ExitApp
	;}else if (A_ThisMenuItem="显示窗口"){
	
	}else{
	
	}
}

控制窗口(窗口标题,控制类型*){
if (控制类型[1]="show" or 控制类型[1]="显示"){
	winshow,%窗口标题%
}else if (控制类型[1]="hide" or 控制类型[1]="隐藏"){
	winhide,%窗口标题%
}else if (控制类型[1]="close" or 控制类型[1]="关闭"){
	WinClose,%窗口标题%
}else if (控制类型[1]="Transparent" or 控制类型[1]="透明度"){
	winset,Transparent,% 控制类型[2],%窗口标题%
}else if (控制类型[1]="TransColor" or 控制类型[1]="透明色"){
	WinSet, TransColor, % 控制类型[2], %窗口标题%
}else{
	

}

}

读取热键列表(){
IniRead,热键列表,超级热键.ini,
	loop,Parse,热键列表,`n
	{
		if (A_loopfield!="帮助说明" && A_loopfield!="全局配置"){
			列表:=列表 "|" A_LoopField
		}
	}
	;GuiControl, Sub-command, ControlID [, Param3] 
	;列表:=SubStr(列表,2)
	GuiControl,,hotkeylist ,%列表%
}

命令选择列表更新(){
gui,hGui:default
Gui, ListView, cmdlist
commandlist:="send|send2|run|winset"
;LV_Add(Options, Field1, Field2,)
;LV_Modify(RowNumber, Options [, NewCol1, NewCol2, ...])
LV_ModifyCol(1, 60) ;指定第一列的宽度
LV_ModifyCol(2, 120) ;指定第二列的宽度
LV_ModifyCol(3, 120) ;指定第三列的宽度
LV_Modify(2, col1,"命令", "参数")
LV_Insert(55, clo1 check, "发送按键", "{enter}")
LV_Insert(55, clo1 check, "延时发送", "{enter}")
LV_Insert(55, clo1 check, "运行程序", "{enter}")
LV_Insert(55, clo1 check, "控制窗口", "{enter}")
;LV_Modifycol(1, "命令", "参数")


}

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

超级热键

2020-3-9 5:46:44

其他

超级玛丽

2020-3-9 5:48:44

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