-1

这是我的循环代码:

Do While potsStatus = True
Dim ForeGroundHwnd As IntPtr = GetForegroundWindow
Dim MySearchWinow As IntPtr = FindWindow(Nothing, SearchWindow)
If ForeGroundHwnd = MySearchWinow Then
    If rbQ.Checked = True Then
        keybd_event(vbKeyQ, 0, 0, 0)
        keybd_event(vbKeyQ, 0, KEYEVENTF_KEYUP, 0)
        Thread.Sleep(1)
    ElseIf rbW.Checked = True Then
        keybd_event(vbKeyW, 0, 0, 0)
        keybd_event(vbKeyW, 0, KEYEVENTF_KEYUP, 0)
        Thread.Sleep(1)
    ElseIf rbE.Checked = True Then
        keybd_event(vbKeyE, 0, 0, 0)
        keybd_event(vbKeyE, 0, KEYEVENTF_KEYUP, 0)
        Thread.Sleep(1)
    ElseIf rbR.Checked = True Then
        keybd_event(vbKeyR, 0, 0, 0)
        keybd_event(vbKeyR, 0, KEYEVENTF_KEYUP, 0)
        Thread.Sleep(1)
    End If
End If

问题是当循环正在运行并且我退出/关闭它遇到错误的应用程序时,进程仍然存在并且循环永远不会结束。我唯一能做的就是在任务管理器中手动停止该进程。我希望有人可以帮助我。

编辑:解决。我在表单关闭事件中使循环为假。谢谢。

4

1 回答 1

2

查看您的代码,我看不到您设置potsStatus为 false 的任何地方(另一方面,您无需说Do While potsStatus = True,您只需说Do While potsStatus)。你需要做的是有一些机制让你的循环知道它需要停止。

因此,在您的表单关闭事件中,您可以设置potsStatus为 false(假设它是表单范围的变量)。这种看起来会是一个很好的Thread候选者,尽管我不能肯定地说对代码没有更好的了解。

于 2013-04-18T07:33:54.323 回答