Как "отсечь" повторную реакцию на GetAsyncKeyState - VB
Формулировка задачи:
У меня в проге, работающей в пассиве, есть такой досрочный выход из паузы:
Я жму Del, выхожу из паузы, но потом Таймер, отслеживающий нажатия клавиш, ТОЖЕ обрабатывает ЭТО нажатие Del .... Можно как-то отсечь УЖЕ обработанное в паузе нажатие (ну вроде как бы обнулить) ??
Решение задачи: «Как "отсечь" повторную реакцию на GetAsyncKeyState»
textual
Листинг программы
Private Declare Sub Sleep Lib "kernel32" (ByVal milliseconds As Long) 'вызов функции Sleep 1000 'время в миллисекундах Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer 'для отлова нажатия клавиш в другом окне Const VK_DELETE = &H2E: Dim Pa As Byte Public Sub Пауза() Picture1.CurrentX = 100: Picture1.CurrentY = 148: Picture1.ForeColor = vbBlue: Picture1.FontSize = 24: Picture1.Print "П А У З А (Del)": Do: 'If GetAsyncKeyState(VK_DELETE) Then Exit Do Sleep 1000: If GetAsyncKeyState(VK_DELETE) Then Exit Do Pa = Pa - 1: If Pa = 0 Then Exit Do: Picture1.Line (273, 150)-(323, 200), &H4000&, BF: Picture1.CurrentX = 275: Picture1.CurrentY = 148: Picture1.Print Pa: DoEvents 'If GetAsyncKeyState(VK_DELETE) Then Exit Do Loop: Picture1.Line (100, 150)-(333, 200), &H4000&, BF: Picture1.ForeColor = &HFFFF&: Picture1.FontSize = 12: End Sub Private Sub Command1_Click() Timer1.Enabled = False: Pa = 10: Call Пауза: Timer1.Enabled = True: End Sub Private Sub Form_Load() Picture1.ScaleMode = 3: Picture1.BackColor = &H4000&: End Sub Private Sub Timer1_Timer() If GetAsyncKeyState(VK_DELETE) Then Beep: End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д