2Jul/080
Saber si un Proceso esta Ejecutandose desde Visual Basic 6
Hola,bueno este codigo lo que hace es chequear si un proceso esta corriendo o no,usa una funcion que retorna un valor Boolean(verdadero o falso) segun se detecte si se esta ejecutandose...en este caso al apretar un boton chequea como proceso la calculadora de windows cuyo nombre de proceso es CALC.EXE, ustedes reemplazenlo por el que quieran saber...
Visual Basic:
-
Option Explicit
-
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
-
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
-
Private Declare Function EnumProcesses Lib "PSAPI.DLL" (lpidProcess As Long, ByVal cb As Long, cbNeeded As Long) As Long
-
Private Declare Function EnumProcessModules Lib "PSAPI.DLL" (ByVal hProcess As Long, lphModule As Long, ByVal cb As Long, lpcbNeeded As Long) As Long
-
Private Declare Function GetModuleBaseName Lib "PSAPI.DLL" Alias "GetModuleBaseNameA" (ByVal hProcess As Long, ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
-
Private Const PROCESS_VM_READ = &H10
-
Private Const PROCESS_QUERY_INFORMATION = &H400
-
-
Private Function EstaCorriendo(ByVal NombreDelProceso As String) As Boolean
-
Const MAX_PATH As Long = 260
-
Dim lProcesses() As Long, lModules() As Long, N As Long, lRet As Long, hProcess As Long
-
Dim sName As String
-
NombreDelProceso = UCase$(NombreDelProceso)
-
ReDim lProcesses(1023) As Long
-
If EnumProcesses(lProcesses(0), 1024 * 4, lRet) Then
-
For N = 0 To (lRet \ 4) - 1
-
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, lProcesses(N))
-
If hProcess Then
-
ReDim lModules(1023)
-
If EnumProcessModules(hProcess, lModules(0), 1024 * 4, lRet) Then
-
sName = String$(MAX_PATH, vbNullChar)
-
GetModuleBaseName hProcess, lModules(0), sName, MAX_PATH
-
sName = Left$(sName, InStr(sName, vbNullChar) - 1)
-
If Len(sName) = Len(NombreDelProceso) Then
-
If NombreDelProceso = UCase$(sName) Then EstaCorriendo = True: Exit Function
-
End If
-
End If
-
End If
-
CloseHandle hProcess
-
Next N
-
End If
-
End Function
-
-
Private Sub Command1_Click()
-
MsgBox EstaCorriendo("calc.exe")
-
End Sub
saludos.
No TweetBacks yet. (Be the first to Tweet this post)































