Autor
|
Tema: ¿Cómo detecto si un programa está ejecutándose? (Leído 2,737 veces)
|
javito14
Desconectado
Mensajes: 5
|
Pues eso, cómo puedo saber si un programa está ejecutándose. He vista un montón de ejemplos pero ninguno como lo que yo quiero hacer. El único que aparece es leer el nombre de la ventana y cerrar esta, pero el programa que quiero cerrar cambia la ventana, como lo hace el firefox dependiendo en qué página estés, y entonces no se cierra. Cerrar la aplicación es fácil pero lo que quiero es detectar si está en ejecución y si lo está pues la cierro con el shell así private Sub Form_Load() Shell("cmd.exe /c Taskkill nombredelprograma.exe") End Sub
Pues eso, si alguien sabe como detectar si una aplicación está en ejecución por favor que me ayude. Gracias de antemano.
|
|
|
En línea
|
|
|
|
seba123neo
|
Hola,podes probar esto,es del api-guide o sea hay que buscar ... 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
eso de usar batch para programar en visual basic me tiene harto,no es programar en visual basic usar comandos de batch...hacelo con lo qeu te ofrece visual basic... saludos.
|
|
|
En línea
|
|
|
|
krackwar
Desconectado
Mensajes: 900
|
Hola,podes probar esto,es del api-guide o sea hay que buscar ... 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
eso de usar batch para programar en visual basic me tiene harto,no es programar en visual basic usar comandos de batch...hacelo con lo qeu te ofrece visual basic... saludos. Me da rabia contigo seba123neo por que estas fomentando la flojera ya que les das el trabajo hecho y ellos ni siquiera se dan el trabajo de buscar.
|
|
|
En línea
|
Mi blogBienvenido krackwar, actualmente tu puntuación es de 38 puntos y tu rango es Veteran. El pollo número 1, es decir yo, (krackwar), adoro a Shaddy como a un dios.
|
|
|
seba123neo
|
la verdad tenes razon, soy un boludo
|
|
|
En línea
|
|
|
|
|
cobein
|
Este tipo de preguntas hacen honor al nombre del foro! xD
|
|
|
En línea
|
|
|
|
SKL (orignal)
Desconectado
Mensajes: 259
UpLoadSourceCode
|
Este tipo de preguntas hacen honor al nombre del foro! xD
concuerdo!!! si vos mismo ejecutaste el progrrama, usa el previnstance de cobein!!! sl2
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
¿Como ocultar programa al iniciar windows pero que siga ejecutandose?
Windows
|
[{tusombra}]
|
6
|
13,367
|
8 Enero 2012, 09:03 am
por Randomize
|
|
|
Keylogger queda ejecutándose en un while infinito
Programación C/C++
|
kutcher
|
6
|
2,853
|
13 Septiembre 2014, 06:05 am
por BloodSharp
|
|
|
BATCH (Verificacion x tiempo si soft esta ejecutandose, caso contrario iniciar)
« 1 2 »
Scripting
|
morganfreeman
|
11
|
8,756
|
4 Febrero 2015, 16:56 pm
por morganfreeman
|
|
|
Qué hacer para que mi programa vuelva al menú anterior y siga ejecutandose
Programación C/C++
|
RGT
|
8
|
11,799
|
27 Abril 2015, 04:15 am
por Josuex24
|
|
|
Como detecto la inactividad en batch?
Scripting
|
AweboGamer
|
2
|
2,359
|
21 Julio 2019, 16:15 pm
por AweboGamer
|
|