Как правильно записать событие? - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д