Autor
|
Tema: saber si un programa se esta ejecutando (Leído 19,912 veces)
|
ToNy_EsP
Desconectado
Mensajes: 61
V.I.P Programmer
|
Muy buenas tardes, pues estuve buscando algún código por GooGle que cumpliese con esa función, encontré muchos codes, pero ninguno me funcionó :S. Mi pregunta es: ¿Qué código debo poner para que me diga si una aplicación está ejecutándose o no? Más o menos esto es lo que querría : If AKILAAPLICACION.EXE está ejecutándose then msgbox "Está ejecutándose" else msgbox "No se está ejecutando" End If
|
|
|
En línea
|
*Si pasas mucho tiempo pensando sobre una cosa, terminarás por no hacerla (Bruce Lee).
|
|
|
Spider-Net
Desconectado
Mensajes: 1.165
Un gran poder conlleva una gran responsabilidad
|
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() If EstaCorriendo("calc.exe") Then MsgBox "El programa está en ejecución" Else MsgBox "El programa NO está en ejecución" End If End Sub
Además de buscar en google deberías usar el buscador del foro un poco , lo he encontrado a la primera... Saludos!
|
|
« Última modificación: 6 Junio 2009, 18:18 pm por Spider-Net »
|
En línea
|
|
|
|
ToNy_EsP
Desconectado
Mensajes: 61
V.I.P Programmer
|
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() If EstaCorriendo("calc.exe") Then MsgBox "El programa está en ejecución" Else MsgBox "El programa NO está en ejecución" End If End Sub
Además de buscar en google deberías usar el buscador del foro un poco , lo he encontrado a la primera... Saludos! :S, es verdad, gracias por recordarmelo men. Muchas gracias!
|
|
|
En línea
|
*Si pasas mucho tiempo pensando sobre una cosa, terminarás por no hacerla (Bruce Lee).
|
|
|
Graphixx
Desconectado
Mensajes: 1.336
Full Stack Developer
|
Codigo mas estilisado.... ' si hay una instancia del programa ejecutandose If App.PrevInstance = True Then Unload Me 'cierro la actual por que ya esta abierta la app Else 'Aqui lo que quieres que haga tu app, si no se estaba ya ejecutando. End If PD: esto solo aplica si quieres saber "si tu aplicacion ya se esta ejecutando", para saber si cualquier ejecutable esta iniciado, toca el code de arriba.
|
|
« Última modificación: 28 Junio 2009, 02:00 am por Graphixx »
|
En línea
|
Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx Rōninnovation
|
|
|
jota440
Desconectado
Mensajes: 1
|
gracias a ambos por su tiempo, andaba buscando algo asi y como aun estamos en enero de 2010 les deseo un feliz 2010 a todos. Codigo mas estilisado.... ' si hay una instancia del programa ejecutandose If App.PrevInstance = True Then Unload Me 'cierro la actual por que ya esta abierta la app Else 'Aqui lo que quieres que haga tu app, si no se estaba ya ejecutando. End If PD: esto solo aplica si quieres saber "si tu aplicacion ya se esta ejecutando", para saber si cualquier ejecutable esta iniciado, toca el code de arriba.
|
|
« Última modificación: 16 Enero 2010, 07:32 am por jota440 »
|
En línea
|
|
|
|
Hasseds
Desconectado
Mensajes: 145
|
|
|
« Última modificación: 2 Marzo 2010, 17:35 pm por Hasseds »
|
En línea
|
Sergio Desanti
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
BATCH Ejecutar programa X tiempo si no se esta ejecutando SOLUCIONADO
Scripting
|
Synth3tik0
|
5
|
13,893
|
8 Enero 2013, 06:17 am
por recari19833
|
|
|
Saber si un programa esta instalado
Programación Visual Basic
|
enterariel
|
3
|
7,011
|
25 Agosto 2011, 22:40 pm
por ignorantev1.1
|
|
|
Ayuda con error ejecutando un programa en C
Programación C/C++
|
solid120
|
1
|
2,254
|
3 Junio 2012, 03:21 am
por durasno
|
|
|
Parece que el Gobierno indio está ejecutando un programa secreto de vigilancia..
Noticias
|
wolfbcn
|
0
|
1,683
|
10 Septiembre 2013, 02:36 am
por wolfbcn
|
|
|
[BATCH] Realizar accion si se esta ejecutando un programa
Scripting
|
Tomii_Leiva1234
|
0
|
2,711
|
16 Octubre 2016, 19:48 pm
por Tomii_Leiva1234
|
|