Как правильно записать событие? - VB
Формулировка задачи:
Доброго времени суток!!! Такой вопрос не получается правильно записать событие вообщем: через апи проверят запущен ли такой-то такой-то процесс(notepad.exe) или такой-то такой-то (calc.exe) если нет ни того ни того тогда запускаем любой из них если если есть хоть один то ничего не делаем. Беда как я полагаю в самом событии if >>>>
дак вот беда в том что пока рандомно появляется блокнот то он запускается всего лишь раз как только выпадает калькулятор
и если запустить событие еще раз (с работающим процессом калькулятор) то он снова запустит что ни будь рандомно помогите кто чем может
Листинг программы
- if pcs("notepad.exe")=0 And pcs("calc.exe")=0 then
- shell("calc.exe") 'или нотепад тут я через рандом делаю
- else
- end 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д