VB编写的按键精灵
我现在把按键精灵这个程序完成了,但整个程序还是有一点问题,就是循环执行的时候,大家都知道按键精灵本身就是代替人工完成重复的一些操作。问题就出在循环里面,我把命令放在一个数...
我现在把按键精灵这个程序完成了,但整个程序还是有一点问题,就是循环执行的时候,大家都知道按键精灵本身就是代替人工完成重复的一些操作。
问题就出在循环里面,我把命令放在一个数组里面,然后不断用TIMER控件去执行它,但是如果它不循环一次,它就不会理会我中断的命令,大家看看我的临时代码:
DoEvents
If Switch = False Then Exit Sub
Dim p As Byte, Text As String
p = Val(SendMessage(Text2.hWnd, EM_GETLINECOUNT, 0&, 0&))
For i = 1 To p
Sleep 1000
DoEvents
TB1_GetLine Text2.hWnd, i - 1, Text ’这里是读出脚本内容
PublicRun Text ‘这一行是执行脚本里面的命令
If Switch = False Then Exit Sub
DoEvents
Next
If Check1.Value = 0 Then Timer1.Interval = 0
DoEvents
大家看到了,我不停地释放控制,就是想在不循环一次的时候可以随时中断程序,但可以说是没有一点作用。
我参考了一下别人的程序,基本上没有用到DoEvents这个命令,但居然可以随时中断,不知道用的什么方案(因作者写代码的习惯实在是不敢恭维,所以看不太懂)
求解决方案。解决了另附加高分! 展开
问题就出在循环里面,我把命令放在一个数组里面,然后不断用TIMER控件去执行它,但是如果它不循环一次,它就不会理会我中断的命令,大家看看我的临时代码:
DoEvents
If Switch = False Then Exit Sub
Dim p As Byte, Text As String
p = Val(SendMessage(Text2.hWnd, EM_GETLINECOUNT, 0&, 0&))
For i = 1 To p
Sleep 1000
DoEvents
TB1_GetLine Text2.hWnd, i - 1, Text ’这里是读出脚本内容
PublicRun Text ‘这一行是执行脚本里面的命令
If Switch = False Then Exit Sub
DoEvents
Next
If Check1.Value = 0 Then Timer1.Interval = 0
DoEvents
大家看到了,我不停地释放控制,就是想在不循环一次的时候可以随时中断程序,但可以说是没有一点作用。
我参考了一下别人的程序,基本上没有用到DoEvents这个命令,但居然可以随时中断,不知道用的什么方案(因作者写代码的习惯实在是不敢恭维,所以看不太懂)
求解决方案。解决了另附加高分! 展开
3个回答
展开全部
DoEvents这个命令,用起来不是很好...
你可以增加一个Boolean型的变量B(你已经用到了Switch,那你就把我下面的代码中的B改为Switch吧),在TIMER控件循环执行时每次都去判断变量B是否为True,如果是就运行,否则跳出循环或者其他,添加一个控件(或者代码)添加代码B= Not B,用于中断/继续TIMER控件循环执行...
如果要达到继续TIMER控件循环执行,这个有点难,有两种解决方法:
1.
For i = 1 To p
Do Until B
DoEvents
Loop
...
这个方法,在Do循环时,CPU使用比较高,而且有不太顺的感觉...
2.
使用静态变量i
Private Sub Timer1_Timer()
Static i As Integer
If Not B then
Timer1.InterVal=500 '用于快速判断是否可以继续执行
Exit Sub
Else
Timer1.Interval= '设置回原值
End If
Dim p As Byte, Text As String
p = Val(SendMessage(Text2.hWnd, EM_GETLINECOUNT, 0&, 0&))
Do Until i>=p
i=i+1
TB1_GetLine Text2.hWnd, i - 1, Text
PublicRun Text
If Not B then
Timer1.InterVal=500 '用于快速判断是否可以继续执行
Exit Sub
End If
Loop
If Check1.Value = 0 Then Timer1.Interval = 0
End Sub
大概思路就是这样,你试试...
如果能实现,还请你跟大家分享下...O(∩_∩)O~...
你可以增加一个Boolean型的变量B(你已经用到了Switch,那你就把我下面的代码中的B改为Switch吧),在TIMER控件循环执行时每次都去判断变量B是否为True,如果是就运行,否则跳出循环或者其他,添加一个控件(或者代码)添加代码B= Not B,用于中断/继续TIMER控件循环执行...
如果要达到继续TIMER控件循环执行,这个有点难,有两种解决方法:
1.
For i = 1 To p
Do Until B
DoEvents
Loop
...
这个方法,在Do循环时,CPU使用比较高,而且有不太顺的感觉...
2.
使用静态变量i
Private Sub Timer1_Timer()
Static i As Integer
If Not B then
Timer1.InterVal=500 '用于快速判断是否可以继续执行
Exit Sub
Else
Timer1.Interval= '设置回原值
End If
Dim p As Byte, Text As String
p = Val(SendMessage(Text2.hWnd, EM_GETLINECOUNT, 0&, 0&))
Do Until i>=p
i=i+1
TB1_GetLine Text2.hWnd, i - 1, Text
PublicRun Text
If Not B then
Timer1.InterVal=500 '用于快速判断是否可以继续执行
Exit Sub
End If
Loop
If Check1.Value = 0 Then Timer1.Interval = 0
End Sub
大概思路就是这样,你试试...
如果能实现,还请你跟大家分享下...O(∩_∩)O~...
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
展开全部
1 VB里引用 那个QMDispatch.dll
2 在系统中用regsvr32命令注册 DLL
注.QMDispatch.dll是按键精灵中 带的.
用regsvr32命令注册他的时候注意
1 路径中不能有中文名字(按键精灵默认的安装路径目录名是中文的)
2 单独把QMDispatch.dll这个文件复制到其他目录 注册也不起作用.
解决方法是把按键精灵 目录中的几个DLL文件一起复制到一个 目录中.然后执行 regsvr32 注册QMDispatch.dll 成功
3程序里加入 Private Declare Function FindPic Lib "QMDispatch" () As Long
4
dim pos as long
Set QMDispatchObj = CreateObject("QMDispatch.QMFunction")
参数 左, 上, 右, 下,寻找图片的路径,相似度
pos=QMDispatchObj.FindPic(0, 0, 1280, 1024, "E:\项目\梦幻西游外挂\进入游戏.bmp", 0.9)
msgbox int(pos/8192)'X左边
msgbox pos MOD 8192 'Y左边
VB6SP6 XPSP2 下运行成功,之前把相似度设成 0.9找不到.后来改成了0.5 可以找到,但相对速度降低了一些.
2 在系统中用regsvr32命令注册 DLL
注.QMDispatch.dll是按键精灵中 带的.
用regsvr32命令注册他的时候注意
1 路径中不能有中文名字(按键精灵默认的安装路径目录名是中文的)
2 单独把QMDispatch.dll这个文件复制到其他目录 注册也不起作用.
解决方法是把按键精灵 目录中的几个DLL文件一起复制到一个 目录中.然后执行 regsvr32 注册QMDispatch.dll 成功
3程序里加入 Private Declare Function FindPic Lib "QMDispatch" () As Long
4
dim pos as long
Set QMDispatchObj = CreateObject("QMDispatch.QMFunction")
参数 左, 上, 右, 下,寻找图片的路径,相似度
pos=QMDispatchObj.FindPic(0, 0, 1280, 1024, "E:\项目\梦幻西游外挂\进入游戏.bmp", 0.9)
msgbox int(pos/8192)'X左边
msgbox pos MOD 8192 'Y左边
VB6SP6 XPSP2 下运行成功,之前把相似度设成 0.9找不到.后来改成了0.5 可以找到,但相对速度降低了一些.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DoEvents这个命令,用起来不是很好... 你可以增加一个Boolean型的变量B(你已经用到了Switch,那你就把我下面的代码中的B改为Switch吧),在TIMER控件循环...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询