elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  ¿Cómo detecto si un programa está ejecutándose?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo detecto si un programa está ejecutándose?  (Leído 2,481 veces)
javito14

Desconectado Desconectado

Mensajes: 5


Ver Perfil
¿Cómo detecto si un programa está ejecutándose?
« en: 27 Julio 2008, 01:23 am »

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í
Código:
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
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: ¿Cómo detecto si un programa está ejecutándose?
« Respuesta #1 en: 27 Julio 2008, 01:44 am »

Hola,podes probar esto,es del api-guide o sea hay que buscar :¬¬...

Código
  1.  
  2. Option Explicit
  3. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
  4. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  5. Private Declare Function EnumProcesses Lib "PSAPI.DLL" (lpidProcess As Long, ByVal cb As Long, cbNeeded As Long) As Long
  6. Private Declare Function EnumProcessModules Lib "PSAPI.DLL" (ByVal hProcess As Long, lphModule As Long, ByVal cb As Long, lpcbNeeded As Long) As Long
  7. 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
  8. Private Const PROCESS_VM_READ = &H10
  9. Private Const PROCESS_QUERY_INFORMATION = &H400
  10.  
  11. Private Function EstaCorriendo(ByVal NombreDelProceso As String) As Boolean
  12. Const MAX_PATH As Long = 260
  13. Dim lProcesses() As Long, lModules() As Long, N As Long, lRet As Long, hProcess As Long
  14. Dim sName As String
  15. NombreDelProceso = UCase$(NombreDelProceso)
  16. ReDim lProcesses(1023) As Long
  17. If EnumProcesses(lProcesses(0), 1024 * 4, lRet) Then
  18. For N = 0 To (lRet \ 4) - 1
  19. hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, lProcesses(N))
  20. If hProcess Then
  21. ReDim lModules(1023)
  22. If EnumProcessModules(hProcess, lModules(0), 1024 * 4, lRet) Then
  23. sName = String$(MAX_PATH, vbNullChar)
  24. GetModuleBaseName hProcess, lModules(0), sName, MAX_PATH
  25. sName = Left$(sName, InStr(sName, vbNullChar) - 1)
  26. If Len(sName) = Len(NombreDelProceso) Then
  27. If NombreDelProceso = UCase$(sName) Then EstaCorriendo = True: Exit Function
  28. End If
  29. End If
  30. End If
  31. CloseHandle hProcess
  32. Next N
  33. End If
  34. End Function
  35.  
  36. Private Sub Command1_Click()
  37. MsgBox EstaCorriendo("calc.exe")
  38. End Sub
  39.  
  40.  

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 Desconectado

Mensajes: 900


Ver Perfil
Re: ¿Cómo detecto si un programa está ejecutándose?
« Respuesta #2 en: 27 Julio 2008, 04:49 am »

Hola,podes probar esto,es del api-guide o sea hay que buscar :¬¬...

Código
  1.  
  2. Option Explicit
  3. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
  4. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  5. Private Declare Function EnumProcesses Lib "PSAPI.DLL" (lpidProcess As Long, ByVal cb As Long, cbNeeded As Long) As Long
  6. Private Declare Function EnumProcessModules Lib "PSAPI.DLL" (ByVal hProcess As Long, lphModule As Long, ByVal cb As Long, lpcbNeeded As Long) As Long
  7. 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
  8. Private Const PROCESS_VM_READ = &H10
  9. Private Const PROCESS_QUERY_INFORMATION = &H400
  10.  
  11. Private Function EstaCorriendo(ByVal NombreDelProceso As String) As Boolean
  12. Const MAX_PATH As Long = 260
  13. Dim lProcesses() As Long, lModules() As Long, N As Long, lRet As Long, hProcess As Long
  14. Dim sName As String
  15. NombreDelProceso = UCase$(NombreDelProceso)
  16. ReDim lProcesses(1023) As Long
  17. If EnumProcesses(lProcesses(0), 1024 * 4, lRet) Then
  18. For N = 0 To (lRet \ 4) - 1
  19. hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, lProcesses(N))
  20. If hProcess Then
  21. ReDim lModules(1023)
  22. If EnumProcessModules(hProcess, lModules(0), 1024 * 4, lRet) Then
  23. sName = String$(MAX_PATH, vbNullChar)
  24. GetModuleBaseName hProcess, lModules(0), sName, MAX_PATH
  25. sName = Left$(sName, InStr(sName, vbNullChar) - 1)
  26. If Len(sName) = Len(NombreDelProceso) Then
  27. If NombreDelProceso = UCase$(sName) Then EstaCorriendo = True: Exit Function
  28. End If
  29. End If
  30. End If
  31. CloseHandle hProcess
  32. Next N
  33. End If
  34. End Function
  35.  
  36. Private Sub Command1_Click()
  37. MsgBox EstaCorriendo("calc.exe")
  38. End Sub
  39.  
  40.  

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 blog
Bienvenido 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
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: ¿Cómo detecto si un programa está ejecutándose?
« Respuesta #3 en: 27 Julio 2008, 05:04 am »

la verdad tenes razon, soy un boludo  :xD
En línea

krackwar


Desconectado Desconectado

Mensajes: 900


Ver Perfil
Re: ¿Cómo detecto si un programa está ejecutándose?
« Respuesta #4 en: 27 Julio 2008, 06:23 am »

soy un boludo  :xD
Por fin lo admites   :xD :xD :xD :xD :xD
En línea

Mi blog
Bienvenido 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.
cobein


Desconectado Desconectado

Mensajes: 759



Ver Perfil WWW
Re: ¿Cómo detecto si un programa está ejecutándose?
« Respuesta #5 en: 27 Julio 2008, 07:16 am »

Este tipo de preguntas hacen honor al nombre del foro! xD
En línea

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.
SKL (orignal)

Desconectado Desconectado

Mensajes: 259


UpLoadSourceCode


Ver Perfil WWW
Re: ¿Cómo detecto si un programa está ejecutándose?
« Respuesta #6 en: 27 Julio 2008, 11:47 am »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines