回到你的问题,为了加快你找色速度,首先尽量缩小你找色的范围,之后,把相似度尽量提高,相似度是1时候最快,但是很容易影响找色结果,这个你自己看着办,建议用大漠插件,大漠插件里面有一个找多色指令,这个指令几毫秒可以完成找多色,比你自己用按键自带插件,写一个函数的方法快多了,本人认为大漠插件能解决你的问题。请暂时插入一列辅助列,比如B列,然后对应A1数据的话输入
=VALUE(TEXT(A1,"####-##-##"))-1
然后下拉,将结果的单元格格式设置为日期就可以得到日期格式的结果了,然后将结果复制为“数值”去掉公式就可以了。
如果还是要保留原来的数据格式,输入:
=YEAR(VALUE(TEXT(A1,"####-##-##"))-1)&MONTH(VALUE(TEXT(A1,"####-##-##"))-1)&DAY(VALUE(TEXT(A1,"####-##-##"))-1)
评论|0
2012-11-26 17:38greensky_34|四级
你说的”头一天“是指的”前一天“吗,如果是的话,你可以这样做:
1)用公式分别提取年月日,如在B1中写入=left(A1,4)可以提取年,在C1中写入=right(left(A1,6),2)提取月,在D1中写入=right(A1,2)提取日。
2)组合成日期形式可以在E1中输入:=DATE(year,month, day),也就是=DATE(B1,C1,D1)
3)计算”前一天“,在F1中输入=E1-1。日期可做数学运算。
可以看到,这里的思路是:把文本转换成日期形式,然后对日期做数学运算。
有了这个思路,其实可以写成一个长长的公式:=DATE(left(A1,4),right(left(A1,6),2),right(A1,2))-1
注意:日期的格式一定要相同,年4位,月2位,日2位。如果不是这样的格式就麻烦很多了。不过或许也有办法,也是按以上的思路进行。IDA=BeginThread(A) //这样调用错了,应该改为IDA=BeginThread(A())
If Edown = -1 Then
BeginThread //这里没有目标进程,语法有错。
Call 子程序A() //不知道你为什么加“子程序”,你下面并没有定义,应该是Call A()
DimEnv IDA,IDB,IDC //所定义的环境变量虽然没语法错误,不过下面代码没有用到,不定义也一样命令名称
BeginThread 同时运行过程
命令功能
新开一个线程运行当前脚本,从指定的过程开始运行
命令参数
字符串型,过程名
(注意:过程不能带参数,如:
Sub 过程(参数1)
End Sub
使用时会造成未知问题。)
返 回 值
整数型,线程ID [注:按键精灵820版新增返回值参数]
脚本例子
按键精灵8及以上语法
复制代码
//注:按键精灵820版“BeginThread”新增 返回值参数
MessageBox "多线程命令属于高级命令功能,不推荐新手使用。"
//所谓多线程并不是同时做一件相同的事情,而是不分前后顺序执行脚本。
Dimenv Hwnd1 //定义环境变量(多线程需要)
RunApp "notepadexe" //启动3个记事本测试用
RunApp "notepadexe"
RunApp "notepadexe"
Delay 2000 //等待3个记事本工具打开
Hwnd = PluginWindowSearch("无标题 - 记事本") //搜索所有记事本窗口句柄
MyArray = Split(Hwnd, "|") //分解句柄
If UBound(MyArray) >= 0 Then //判断是否搜到句柄?
For i = 0 To UBound(MyArray) - 1
hwndEx = Clng(MyArray(i)) //类型转换
Call PluginWindowMove(hwndEx, i 200 + 100, i 200 + 100) //调整窗口位置
Call PluginWindowActive(hwndEx) //激活前面
Hwnd1 = PluginWindowFindEx(hwndEx, 0, "Edit", 0) //获取可打字的窗口句柄
BeginThread 打字 //启动线程
Delay 100 //启动线程需要点时间
Next
End If
//以下是无限循环防止全部脚本停止。
Do
Delay 1000
Loop
//以下是测试用子程序例子
Sub 打字()
//首先获取环境变量句柄
Hwnd2 = Hwnd1
//然后开始循环或者无限循环需要执行的脚本内容
For i=0 to 20
Call PluginBkgndSendString(Hwnd2, i)
Delay 100
Call PluginBkgndKeyPress(Hwnd2, 13)
Delay 200
Next
End Sub
//注:按键精灵820版“BeginThread”新增 返回值参数
MessageBox "多线程命令属于高级命令功能,不推荐新手使用。"
//所谓多线程并不是同时做一件相同的事情,而是不分前后顺序执行脚本。
Dimenv Hwnd1 //定义环境变量(多线程需要)
RunApp "notepadexe" //启动3个记事本测试用
RunApp "notepadexe"
RunApp "notepadexe"
Delay 2000 //等待3个记事本工具打开
Hwnd = PluginWindowSearch("无标题 - 记事本") //搜索所有记事本窗口句柄
MyArray = Split(Hwnd, "|") //分解句柄
If UBound(MyArray) >= 0 Then //判断是否搜到句柄?
For i = 0 To UBound(MyArray) - 1
hwndEx = Clng(MyArray(i)) //类型转换
Call PluginWindowMove(hwndEx, i 200 + 100, i 200 + 100) //调整窗口位置
Call PluginWindowActive(hwndEx) //激活前面
Hwnd1 = PluginWindowFindEx(hwndEx, 0, "Edit", 0) //获取可打字的窗口句柄
BeginThread 打字 //启动线程
Delay 100 //启动线程需要点时间
Next
End If
//以下是无限循环防止全部脚本停止。
Do
Delay 1000
Loop
//以下是测试用子程序例子
Sub 打字()
//首先获取环境变量句柄
Hwnd2 = Hwnd1
//然后开始循环或者无限循环需要执行的脚本内容
For i=0 to 20
Call PluginBkgndSendString(Hwnd2, i)
Delay 100
Call PluginBkgndKeyPress(Hwnd2, 13)
Delay 200
Next
End Sub
脚本例子
按键精灵7及以下语法
复制代码
MessageBox "多线程命令属于高级命令功能,不推荐新手使用。"
//下面这个例子会打开一个记事本,用2个线程向其中模拟按键
VBSCall RunApp("notepad")
Delay 1000
SetEnv "Key","65"
BeginThread "Thread1"
While 1
Gosub PressKey
key=key+1
If key>90
key=65
EndIf
SetEnv "Key",CStr(key)
EndWhile
EndScript
Sub Thread1
For 10
Gosub PressKey
EndFor
KeyPress 13,1
SayString "线程1已经结束"
KeyPress 13,1
Return
Sub PressKey
key=GetEnv("Key")
KeyPress key,1
Delay 200
Return多线程 命令很纠结 !!
下面是我的多线程 源码给你参考
DimEnv QA
Call 大漠注册()
Do While 7 = 7
KEYP = GetLastKey()
If keyP = 118 Then
QA = dmGetMousePointWindow()
Call PluginMsgTips(QA)
启动线程 = BeginThread(开始工作)
End If
loop
Sub 开始工作
hwnd = QA
Call PluginRegDllReg("\plugin\大漠梦想\dmdll")//创建大漠对象
set dm = createobject("dmdmsoft")//指定全局路径。
Delay 200
Call 绑定
Delay 10
Do
key = GetLastKey()
Call PluginMsgTips(key)
Delay 500
Call PluginMsgTips("")
If key <> 118 AND KEY <> 123 Then
dmKeyPress key
End If
Loop
End Sub
Sub 绑定
dm_ret = dmBindWindow(hwnd,"normal","normal","dx",0)
Delay 200
If dm_ret=0 Then
MessageBox "绑定失败"
ExitScript
End If
End Sub
Sub 大漠注册()
PutAttachment "\plugin","dll"
PutAttachment "\plugin\大漠梦想","bmp"
PutAttachment "\plugin\大漠梦想","txt"
PutAttachment "\plugin\大漠梦想","dmdll"
//↑PutAttachment释放附件
//95D4CA3B477FC3F5140B48B5D4D3170B 大客服注册码
//A79D9F5DFFD168854EA7BE3F2EA35E1A 大兵的注册码
Call PluginRegDllReg("\plugin\大漠梦想\dmdll")//创建大漠对象
set dm = createobject("dmdmsoft")//指定全局路径。
//↑大漠·注册
Delay 40
End Sub
//释放 绑定窗口
Sub OnScriptExit()
dm_ret = dmUnBindWindow()
End Sub//下面2行是启动线程的,按需求放在需要的位置
ID1 = BeginThread(线程1)
ID2 = BeginThread(线程2)
//下面两段放哪都可以
Sub 线程1
StopThread ID2
MsgBox “我是线程1,我刚才把线程2停掉了!”
End Sub
Sub 线程2
StopThread ID1
MsgBox “我是线程2,我刚才把线程1停掉了!”
End SubBeginThread a //开启线程调用a
BeginThread b //开启线程调用b
Sub a
//子程序a
End Sub
Sub b
//子程序a
End Sub
ab就同时运行了,明白。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)