按键精灵enabled和disabled是什么意思

简介Qui界面加载之后卡死?点击控件之后卡死?为什么会出现这种情况?该如何解决?且听小编细细道来~工具/原料按键精灵2014方法/步骤原因QUI界面事件如果添加循环命令,或者延时命令。添加之后,我们再去点击QUI界面,就会出现卡死的现象。QUI界面事件:窗口事件以及控件事件统称为界面事件。界面事件?按键精灵是怎么知道我们点击了哪个控件,鼠标移动到了界面的哪里了呢?其实,我们看似平常的一个操作,例如:移动鼠标到窗口界面上点击输入框。这样的一个操作,其实是被分解成了几百条消息反馈给按键精灵软件,告诉它鼠标现在在哪里,做了什么,点击了控件,然后控件要响应什么操作等等。而这些消息,按键精灵软件会逐条处理,处理完这一条才会继续处理下一条。所以,当它在处理循环事件会延时事件时,没有处理完之前都不处理其它信息。使用循环命令导致界面卡死的解决方法1、多线程界面上有两个控件,输入框1(InputBox1)和按钮1(Button1)当按下按钮1(Button1)时,启动线程,将延时命令和循环命令放在线程里执行。循环一百次给输入框赋值。代码:EventForm1.Button1.ClickBeginThread循环//启动线程EndEventSub循环Fori=1To100Delay200Form1.InputBox1.Text=&quot&quot&ampiNextEndSub2、定时器定时器的有效设置为否时间间隔设置为200毫秒(执行一次循环需要的时间)当按下按钮1(Button1)时,将定时器的有效设置为是(Form1.Timer1.Enabled=True)定时器每隔200毫秒会执行一次Timer事件我们在Timer事件中,定义一个变量i,每执行一次Timer时间i的值叠加1,直到i的值等于我们设置循环次数,则将定时器的有效设置为否。代码:EventForm1.Button1.ClickForm1.Timer1.Enabled=TrueEndEventEventForm1.Timer1.Timeri=i+1Ifi=100thenForm1.Timer1.Enabled=FalseForm1.InputBox1.Text=&quot&quot&ampiEndEvent1、API函数我们已经知道了,界面卡住,是因为在处理循环命令时,产生了其它的消息导致的。那么我们可以这样做,当在执行循环命令时,界面上的其它所有消息都忽略掉,不反馈给按键精灵软件要用到四个Api函数:LocalAlloc、PeekMessageA、TranslateMessage、DispatchMessageA、LocalFree代码:DeclareFunctionPeekMessageALib&quotuser32.dll&quotAlias&quotPeekMessageA&quot(ByVal消息格式AsAny,ByVal窗口句柄AsLong,ByVal消息最小过滤值AsLong,ByVal消息最大过滤值AsLong,ByVal删除消息AsLong)AsLongDeclareFunctionLocalAllocLib&quotkernel32&quotAlias&quotLocalAlloc&quot(ByValwOemCharAsLong,ByValwOmCharAsLong)AsLongDeclareFunctionLocalFreeLib&quotkernel32&quotAlias&quotLocalAlloc&quot(ByValhMemAsLong)AsLongDeclareFunctionTranslateMessageLib&quotuser32.dll&quotAlias&quotTranslateMessage&quot(ByVal消息结构AsAny)AsLongDeclareFunctionDispatchMessageALib&quotuser32.dll&quotAlias&quotDispatchMessageA&quot(ByVal消息结构AsAny)AsLongEventForm1.Button1.ClickFori=1to100Form1.InputBox1.Text=&quot&quot&ampicall处理事件NextEndEventSub处理事件()WM=LocalAlloc(0,28)//分配一块存储空间用于存放消息IfPeekMessageA(WM,0,0,0,1)&lt&gt0Then//获取当前程序的消息存放在&quot消息结构&quot里,然后将消息删除,忽略不处理TranslateMessageWM//将空消息转换成程序可识别格式(虚拟键消息转换为字符消息)DispatchMessageAWM//将转完格式的空消息反馈给程序EndIfLocalFreeWM//释放存储空间EndSub使用延时命令导致界面卡死的解决方法API函数当我们的延时命令不是放在多线程里,也不是靠定时器来处理,一定要放在QUI事件中时,该怎么办呢?我们用上面说到的Api函数忽略消息的方法外加一个API函数:GetTickCount来模拟一个在QUI界面事件中可执行的延时命令。函数:GetTickCount:GetTickCount返回从操作系统启动所经过的毫秒数步骤:我们先获取一次操作系统启动经过的毫秒数,放到变量s中然后循环再次获取操作系统启动经过的毫秒数,如果小于我们设定的延时,就继续忽略消息,如果达到延时数则继续下一条循环。代码:DeclareFunctionPeekMessageALib&quotuser32.dll&quotAlias&quotPeekMessageA&quot(ByVal消息格式AsLong,ByVal窗口句柄AsLong,ByVal消息最小过滤值AsLong,ByVal消息最大过滤值AsLong,ByVal删除消息AsLong)AsLongDeclareFunctionLocalAllocLib&quotkernel32&quotAlias&quotLocalAlloc&quot(ByValwOemCharAsLong,ByValwOmCharAsLong)AsLongDeclareFunctionLocalFreeLib&quotkernel32&quotAlias&quotLocalAlloc&quot(ByValhMemAsLong)AsLongDeclareFunctionTranslateMessageLib&quotuser32.dll&quotAlias&quotTranslateMessage&quot(ByVal消息结构AsLong)AsLongDeclareFunctionDispatchMessageALib&quotuser32.dll&quotAlias&quotDispatchMessageA&quot(ByVal消息结构AsLong)AsLongDeclareFunctionGetTickCountLib&quotkernel32&quotAlias&quotGetTickCount&quot()AsLongEventForm1.Button1.ClickFori=0To10Form1.InputBox1.Text=&quot&quot&ampicall超级延时(200)NextEndEventSub超级延时(毫秒)Dimss=GetTickCount()Wm=LocalAlloc(0,28)While(GetTickCount()-s&lt毫秒)IfPeekMessageA(Wm,0,0,0,1)&lt&gt0Then//得到消息TranslateMessageWmDispatchMessageAWmEndIfWendLocalFreeWmEndSub注意:使用API函数忽略消息有个弊端,那就是当我们忽略消息的过程中,如果我们关闭了窗口,那只是假关闭。窗口的关闭是操作系统处理响应的,而关闭窗口之后要触发的一些操作,例如销毁进程、释放内存空间等等,都是程序本身在执行。但是程序被关闭时的状态是忽略处理消息的状态,关闭窗口要触发的操作被忽略掉了。所以看上去窗口被关闭了,实际上窗口还在运行中。
游戏辅助开发教程:按键精灵自动登录...
按键精灵开发教程:遍历子窗口...
按键精灵多点找色脚本开发教程...
DNF辅助教程:按键精灵卡牌对对翻...
按键精灵游戏脚本开发教程:自动逛地图打怪...
■ 网友在搜你的位置:
一、按钮介绍
&&& 按钮又称按钮组件。多数情况下我们用按钮作为触发某些功能的入口。
二、按键属性介绍
&&& 按钮的属性总共有9项,其中有4个基本属性和5个位置属性。
& 基本属性分别是:名称(Name)、显示(Visible)、有效(Enabled)、标题(Caption)。
& 位置属性包含:左边(Left)、上边(Top)、宽度(Width)、高度(Height)、显示顺序(ZOrder)。
&&QUI中对于控件的属性操作的步骤均是一样的,在按钮控件上我们就不重复讲解了。可以参考:
三、按钮事件
&&& 在目前的QUI中,按钮只有一个事件——点击事件。这里的点击确切指的是单击。
&&& 我们同样选择按钮然后在属性右下角的下拉框中选择“点击”事件。按键精灵就会默认帮你添加按键的点击事件代码。或是直接双击按钮控件也会有同样的效果。
&&& Event Form1.Button1.Click&&&& End Event
&&& 为了验证这个单击事件是有效果的,我们还是照旧在单击事件中添加弹窗口命令,弹出提示“响应按钮单击事件”。
&&& Event Form1.Button1.Click&&&&&&& MessageBox "响应按钮单击事件"&&& End Event
&&& 脚本添加完毕后,还是进入调试里面的自定义界面。然后点击刚才创建的按钮。
&&& 你会立刻看到弹出一个窗口提示“响应按钮单击事件”。
&&& PS:脚本范例下载你的位置:
关于下拉框的属性3,有效(Enabled)
17:37:53 |
来源: 按键精灵资源站
本帖最后由 有来有去 于
17:40 编辑
我在中根据情况有时让它虚掉,enabled这个值应为0,怎么在按键程序中读出来还是1啊
这段代码谁帮我看看,结果为何不变? [code]boBox1.Enabled
Event Form1.CheckBox1.Click
& & If Form1.CheckBox1.Value = 1 Then&&
& && &&&boBox1.Enabled = 0
& && &&&boBox1.Enabled = 1
& & End If
End Event[/code]

我要回帖

更多关于 android enabled 的文章

 

随机推荐