当(神模式)运行时我在运行我的应用程序时遇到问题...我在网上发现,这似乎是一个常见的错误。修复是将Application.DoEvents()
置于循环中,我做了...但是现在每次我打开上帝模式,CheckBoxes出错,当他们被点击时他们激活...程序不会停止响应,但程序需要两次点击才能直观地显示它是否有效:
完整代码:
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
If CheckBox1.Checked = True Then
Do
Application.DoEvents()
WriteDMAInteger("Dishonored", GetModuleHandle("Dishonored", "Dishonored.exe") + &H100C810, {&H344}, 70, 1, 4)
Loop Until CheckBox1.Checked = False
End If
End Sub
任何想法或解决方案?
答案 0 :(得分:0)
正如评论所示,不要使用Application.DoEvents()
这比它的价值更麻烦。相反,请使用计时器。
从工具箱中将Timer控件拖到窗体上。将其Interval
属性设置为合适的属性(如100毫秒)。添加Tick事件并在该事件中调用WriteDMAInteger
方法。在复选框的更改事件中,只需启用或禁用计时器:
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
'Enables the time if the checkbox is checked
Timer1.Enabled = CheckBox1.Checked
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
WriteDMAInteger("Dishonored", GetModuleHandle("Dishonored", "Dishonored.exe") + &H100C810, {&H344}, 70, 1, 4)
End Sub
将定时器的间隔设置为100 ms,WriteDMAInteger
方法将每秒调用10次。对于间隔,您可以尝试使用小于100的值,但限制将是大约50毫秒。