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

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

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

Доброго времени суток!!! Такой вопрос не получается правильно записать событие вообщем: через апи проверят запущен ли такой-то такой-то процесс(notepad.exe) или такой-то такой-то (calc.exe) если нет ни того ни того тогда запускаем любой из них если если есть хоть один то ничего не делаем. Беда как я полагаю в самом событии if >>>>
дак вот беда в том что пока рандомно появляется блокнот то он запускается всего лишь раз как только выпадает калькулятор и если запустить событие еще раз (с работающим процессом калькулятор) то он снова запустит что ни будь рандомно помогите кто чем может
Пример если кто не понял могу скинуть

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

textual
Листинг программы
Private Const MAX_PATH = 260
Private Type PROCESSENTRY32
    dwSize As Long
    cntUsage As Long
    th32ProcessID As Long
    th32DefaultHeapID As Long
    th32ModuleID As Long
    cntThreads As Long
    th32ParentProcessID As Long
    pcPriClassBase As Long
    dwFlags As Long
    szExeFile As String * MAX_PATH
End Type
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
'Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
Dim VL As Integer
Public Function PCS(ByVal Proc As String)
On Error Resume Next
Dim ProcessID As Long, ExeName As String
Dim hSnapShot As Long, nProcess As Long
Dim uProcess As PROCESSENTRY32
Dim hProcess As Long
hSnapShot = CreateToolhelpSnapshot(2, 0)
uProcess.dwSize = LenB(uProcess)
nProcess = Process32First(hSnapShot, uProcess)
Do While nProcess
EN = Left(uProcess.szExeFile, InStr(1, uProcess.szExeFile, String(1, 0), vbBinaryCompare) - 1)
If EN = Proc Then
ProcessID = uProcess.th32ProcessID
VL = 1
Exit Do
Else
VL = 0
End If
nProcess = Process32Next(hSnapShot, uProcess)
Loop
PCS = VL
End Function

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


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

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

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