按键精灵 大漠多线程 重复调用子程序 问题
按键的多线程(就2个线程)一个执行命令,一个检测。但是我主程序(检测)到条件达成要停止另一个子程序然后重新启动这个子程序。那么就会出现这个子程序被多次启动(也就是说只要检...
按键的多线程(就2个线程)一个执行命令,一个检测。但是我主程序(检测)到条件达成要停止另一个子程序然后重新启动这个子程序。那么就会出现这个子程序被多次启动(也就是说只要检测条件达到,停止子程序然后启动,多次后就会形成有多个子程序在同时执行。
代码是这样的:
Set dm = createobject("dm.dmsoft")//绑定大漠
//【多线程开始】
//定义子线程数
Dimenv 控制器,ID1,ID2,控制器2
ID1 = BeginThread (XC1)
ID2 = BeginThread (XC2)
控制器 = 0
控制器2 = 0
//主线程
Do
Delay 2000
If 控制器2 = 1 Then
启动线程2 = BeginThread(XC2)
控制器2 = 0
控制器 = 0
End If
If 控制器 = 1 Then
StopThread ID2
Delay 1000
控制器2 = 1
End If
Loop
//线程1---------------------------------------------
Sub XC1
Set dm = createobject("dm.dmsoft")//绑定大漠
banding = dm.BindWindowEx(.....)//绑定窗口//不管他
dm.EnableShareDict 1
dm_ret = dm.UseDict(0)//选择字库
do
If dm.IsDisplayDead(987, 642, 1017, 714, 60) Then
TracePrint "检测到卡屏了,重置处理"
控制器 = 1
End If
loop
End Sub
//线程2---------------------------------------------
Sub XC2
Set dm = createobject("dm.dmsoft")//绑定大漠
banding = dm.BindWindowEx(.....)//绑定窗口//不管他
dm.EnableShareDict 1
dm_ret = dm.UseDict(0)//选择字库
do
Dim dtx,dty,dsx,dsy
//【寻找附近最近挂机点】
//注:coordinate为目标坐标,range为距离,Arr为目标坐标的数组,Ub为目标坐标有多少组
dTx = dm.Ocr(994, 663, 1010, 673, "980204-670204|5A0404-2A0404|FF0000-000000|980404-670404", 0.9)
dTy = dm.Ocr(994, 699, 1010, 709, "980204-670204|5A0404-2A0404|FF0000-000000|980404-670404", 0.9)//识别坐标
TracePrint "识别坐标为:" & dtx & "," & dty
Dsx = CLng(dTx)
Dsy = CLng(dTy)
TracePrint "人物当前坐标为:" & Dsx & "," & Dsy
......................
......................
.......................//移动到目标坐标等等。。。。就没复制了
end sub 展开
代码是这样的:
Set dm = createobject("dm.dmsoft")//绑定大漠
//【多线程开始】
//定义子线程数
Dimenv 控制器,ID1,ID2,控制器2
ID1 = BeginThread (XC1)
ID2 = BeginThread (XC2)
控制器 = 0
控制器2 = 0
//主线程
Do
Delay 2000
If 控制器2 = 1 Then
启动线程2 = BeginThread(XC2)
控制器2 = 0
控制器 = 0
End If
If 控制器 = 1 Then
StopThread ID2
Delay 1000
控制器2 = 1
End If
Loop
//线程1---------------------------------------------
Sub XC1
Set dm = createobject("dm.dmsoft")//绑定大漠
banding = dm.BindWindowEx(.....)//绑定窗口//不管他
dm.EnableShareDict 1
dm_ret = dm.UseDict(0)//选择字库
do
If dm.IsDisplayDead(987, 642, 1017, 714, 60) Then
TracePrint "检测到卡屏了,重置处理"
控制器 = 1
End If
loop
End Sub
//线程2---------------------------------------------
Sub XC2
Set dm = createobject("dm.dmsoft")//绑定大漠
banding = dm.BindWindowEx(.....)//绑定窗口//不管他
dm.EnableShareDict 1
dm_ret = dm.UseDict(0)//选择字库
do
Dim dtx,dty,dsx,dsy
//【寻找附近最近挂机点】
//注:coordinate为目标坐标,range为距离,Arr为目标坐标的数组,Ub为目标坐标有多少组
dTx = dm.Ocr(994, 663, 1010, 673, "980204-670204|5A0404-2A0404|FF0000-000000|980404-670404", 0.9)
dTy = dm.Ocr(994, 699, 1010, 709, "980204-670204|5A0404-2A0404|FF0000-000000|980404-670404", 0.9)//识别坐标
TracePrint "识别坐标为:" & dtx & "," & dty
Dsx = CLng(dTx)
Dsy = CLng(dTy)
TracePrint "人物当前坐标为:" & Dsx & "," & Dsy
......................
......................
.......................//移动到目标坐标等等。。。。就没复制了
end sub 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询