Как правильно записать событие? - VB

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток!!! Такой вопрос не получается правильно записать событие вообщем: через апи проверят запущен ли такой-то такой-то процесс(notepad.exe) или такой-то такой-то (calc.exe) если нет ни того ни того тогда запускаем любой из них если если есть хоть один то ничего не делаем. Беда как я полагаю в самом событии if >>>>
Листинг программы
  1. if pcs("notepad.exe")=0 And pcs("calc.exe")=0 then
  2. shell("calc.exe") 'или нотепад тут я через рандом делаю
  3. else
  4. end if
дак вот беда в том что пока рандомно появляется блокнот то он запускается всего лишь раз как только выпадает калькулятор и если запустить событие еще раз (с работающим процессом калькулятор) то он снова запустит что ни будь рандомно помогите кто чем может
Пример если кто не понял могу скинуть

Решение задачи: «Как правильно записать событие?»

textual
Листинг программы
  1. Private Const MAX_PATH = 260
  2. Private Type PROCESSENTRY32
  3.     dwSize As Long
  4.     cntUsage As Long
  5.     th32ProcessID As Long
  6.     th32DefaultHeapID As Long
  7.     th32ModuleID As Long
  8.     cntThreads As Long
  9.     th32ParentProcessID As Long
  10.     pcPriClassBase As Long
  11.     dwFlags As Long
  12.     szExeFile As String * MAX_PATH
  13. End Type
  14. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
  15. 'Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
  16. Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
  17. Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
  18. Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
  19. Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
  20. Dim VL As Integer
  21. Public Function PCS(ByVal Proc As String)
  22. On Error Resume Next
  23. Dim ProcessID As Long, ExeName As String
  24. Dim hSnapShot As Long, nProcess As Long
  25. Dim uProcess As PROCESSENTRY32
  26. Dim hProcess As Long
  27. hSnapShot = CreateToolhelpSnapshot(2, 0)
  28. uProcess.dwSize = LenB(uProcess)
  29. nProcess = Process32First(hSnapShot, uProcess)
  30. Do While nProcess
  31. EN = Left(uProcess.szExeFile, InStr(1, uProcess.szExeFile, String(1, 0), vbBinaryCompare) - 1)
  32. If EN = Proc Then
  33. ProcessID = uProcess.th32ProcessID
  34. VL = 1
  35. Exit Do
  36. Else
  37. VL = 0
  38. End If
  39. nProcess = Process32Next(hSnapShot, uProcess)
  40. Loop
  41. PCS = VL
  42. End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут