Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2011, 09:42   #1
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию Остановить выполнение процесса при нажатии на кнопку

Мне необходимо чтобы пинг повторялся через определенные промежутки времени. При нажатии на кнопку останавливался. Я делаю следующим образом, но я его не могу остановить. Как быть?
Код:
Private Sub CommandButton3_Click()
      Время = Cells(1, 6)
   ' Application.OnTime Now + TimeValue(Время)
 Do If Application.Wait(Now + TimeValue("0:00:10")) Then
    
If CheckBox1.Value = True Then
    pid = Shell("ping " + CheckBox1.Caption, 0)
 hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)
 If hProcess <> 0 Then
    Do
    GetExitCodeProcess hProcess, exit_code
        DoEvents
    Loop Until exit_code <> STILL_ACTIVE
    CloseHandle hProcess
 End If
 If exit_code = 0 Then
CheckBox1.BackColor = &H80FF80
 Else
CheckBox1.BackColor = &H8080FF
End If
Else
CheckBox1.BackColor = &HFFFFFF
End If
End If

 Loop While CheckBox8.Value = True
    
End Sub
Aleksandr вне форума Ответить с цитированием
Старый 04.03.2011, 10:14   #2
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Вот так еще делаю, но все равно зависает.
Код:
Private Sub CommandButton3_Click()
   
   Время = Cells(1, 6)
   ' Application.OnTime Now + TimeValue(Время), "PingAllAP"
 
 Do
On Error Resume Next: stopped = False
If Application.Wait(Now + TimeValue(Время)) Then
  
If CheckBox1.Value = True Then
    pid = Shell("ping " + CheckBox1.Caption, 0)
 hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)
 If hProcess <> 0 Then
    Do
    GetExitCodeProcess hProcess, exit_code
        DoEvents
    Loop Until exit_code <> STILL_ACTIVE
    CloseHandle hProcess
 End If
 If exit_code = 0 Then
CheckBox1.BackColor = &H80FF80
 Else
CheckBox1.BackColor = &H8080FF
End If
Else
CheckBox1.BackColor = &HFFFFFF
End If
End If

 Loop While  Loop While stopped = True    
End Sub

Private Sub CommandButton4_Click()
stopped = True
MsgBox "Сканирование сети остановлено!", vbInformation, "Внимание ..."
End Sub

Последний раз редактировалось Aleksandr; 04.03.2011 в 10:24.
Aleksandr вне форума Ответить с цитированием
Старый 04.03.2011, 10:28   #3
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

У Вас там два цикла. Во внутреннем цикле ни чекбоксы, ни переменные не опрашиваются. Вот программа и крутится пока exit_code <> STILL_ACTIVE
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 04.03.2011 в 10:30.
kuklp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при нажатии на кнопку Delete vik85 Помощь студентам 0 20.12.2009 20:34
Скрытие интерфейса при нажатии на кнопку kostghost Общие вопросы Delphi 3 28.08.2009 11:10
Выполнение макроса при нажатии на Лист KinderX Microsoft Office Excel 7 01.07.2009 17:19
прокрутка при нажатии на кнопку neformat JavaScript, Ajax 0 20.06.2008 20:40
Загрузка файла при нажатии на кнопку Simply-Art Общие вопросы Delphi 15 23.01.2007 14:00