comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Proceso repetido, finalizar hasta dejar uno solo

  • 0 Respuestas
  • 1361 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5380
  • Actividad:
    81.67%
  • Reputación 31
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« en: Julio 26, 2010, 01:48:37 pm »
Modulo de Clase:
---------------------------------------------------------
Código: Visual Basic
  1. Option Explicit
  2. Private Const MAX_PATH& = 260
  3. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  4. Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, lProcessID As Long) As Long
  5. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  6. Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
  7. Private Declare Function GetWindowThreadProcessId& Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long)
  8. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long
  9. Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
  10. Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
  11. Private Declare Function RegisterServiceProcess Lib "kernel32" (ByVal ProcessID As Long, ByVal ServiceFlags As Long) As Long
  12. Private Declare Function TerminateProcess Lib "kernel32" (ByVal ApphProcess As Long, ByVal uExitCode As Long) As Long
  13.  
  14. Private Type PROCESSENTRY32
  15. dwSize As Long
  16. cntUsage As Long
  17. th32ProcessID As Long
  18. th32DefaultHeapID As Long
  19. th32ModuleID As Long
  20. cntThreads As Long
  21. th32ParentProcessID As Long
  22. pcPriClassBase As Long
  23. dwFlags As Long
  24. szexeFile As String * MAX_PATH
  25. End Type
  26. Public Sub KillProcess(ByVal ProcessID As Long)
  27. Dim hp&
  28. hp& = OpenProcess(1&, -1&, ProcessID)
  29. TerminateProcess hp&, 0&
  30. DoEvents
  31. End Sub
  32.  
  33. Public Function FindWindowByClass(ByVal WindowClassName As String) As Long
  34. FindWindowByClass = FindWindow(WindowClassName, vbNullString)
  35. End Function
  36.  
  37. Public Function FindProcessByWindowClass(ByVal WindowClassName As String) As Long
  38. Dim pid&
  39. GetWindowThreadProcessId FindWindowByClass(WindowClassName), pid&
  40. FindProcessByWindowClass = pid&
  41. End Function
  42.  
  43. Public Function FindProcessByName(ByVal AppPath As String) As Long
  44. Dim AppPaths, ProcessIds, ParentProcessIds, i As Integer
  45. ListRunningApps AppPaths, ProcessIds, ParentProcessIds
  46. i = FindInArray(AppPaths, AppPath)
  47. If i = -1 Then
  48. FindProcessByName = 0
  49. Else
  50. FindProcessByName = ProcessIds(i)
  51. End If
  52. End Function
  53.  
  54. Public Sub ListRunningApps(ByRef AppPaths, ByRef ProcessIds, ByRef ParentProcessIds)
  55. Dim uProcess As PROCESSENTRY32
  56. Dim rProcessFound As Long
  57. Dim hSnapshot As Long
  58. Dim szExename As String
  59. Dim i As Integer
  60. Const TH32CS_SNAPPROCESS As Long = 2&
  61.  
  62. AppPaths = Array()
  63. ProcessIds = Array()
  64. ParentProcessIds = Array()
  65.  
  66. uProcess.dwSize = Len(uProcess)
  67. hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
  68. rProcessFound = ProcessFirst(hSnapshot, uProcess)
  69.  
  70. Do While rProcessFound
  71. i = InStr(1, uProcess.szexeFile, Chr(0))
  72. szExename = LCase$(Left$(uProcess.szexeFile, i - 1))
  73. AppendToArray AppPaths, szExename
  74. AppendToArray ProcessIds, uProcess.th32ProcessID
  75. AppendToArray ParentProcessIds, uProcess.th32ParentProcessID
  76. rProcessFound = ProcessNext(hSnapshot, uProcess)
  77. Loop
  78. End Sub
  79. Public Function FindInArray(List As Variant, Item As Variant) As Integer
  80. Dim i As Integer
  81. For i = 0 To UBound(List)
  82. If UCase("" & List(i)) = UCase("" & Item) Then
  83. FindInArray = i
  84. Exit Function
  85. End If
  86. Next
  87. FindInArray = -1
  88. End Function
  89. Private Sub AppendToArray(List As Variant, Item As Variant)
  90. ReDim Preserve List(UBound(List) + 1)
  91. List(UBound(List)) = Item
  92. End Sub
----------------------------
este codigo en un formulario.
--------------------------------
Código: Visual Basic
  1. Option Explicit
  2. Private NombreProceso, IdentificacionProceso, ParentIdentificacionProceso
  3. Private PM As Class1, i As Integer
  4.  
  5. Function Ejecutandoce(name As String)
  6. Dim Veces As Integer
  7. Veces = 0
  8. Set PM = New Class1
  9. PM.ListRunningApps NombreProceso, IdentificacionProceso, ParentIdentificacionProceso
  10. For i = 0 To UBound(NombreProceso)
  11. If NombreProceso(i) = name Then
  12. Veces = Veces + 1
  13. End If
  14. Next
  15.  
  16. If Veces = 1 Then Exit Function
  17.  
  18. For i = 0 To UBound(NombreProceso)
  19. If NombreProceso(i) = name Then
  20. PM.KillProcess IdentificacionProceso(i)
  21. Veces = Veces - 1
  22. If Veces = 1 Then Exit Function
  23. DoEvents
  24. End If
  25. Next
  26.  
  27. End Function
  28.  
  29. 'Ejemplo para dejar la calculadora una sola vez en proceso en caso de que se 'este ejecutando mas de una vez
  30. Private Sub Command1_Click()
  31. Ejecutandoce ("calc.exe")
  32. End Sub
« Última modificación: Mayo 12, 2014, 03:18:47 pm por Expermicid »


 

¿Te gustó el post? COMPARTILO!



Como ingresar solo numeros en un campo de texto

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1357
Último mensaje Julio 26, 2010, 10:24:49 am
por ANTRAX
Otra Forma Para Ingresar Solo Numeros

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1356
Último mensaje Julio 26, 2010, 11:16:54 am
por ANTRAX
Ejecutar un solo ejemplar de un programa

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1404
Último mensaje Julio 26, 2010, 10:19:50 am
por ANTRAX
Solo numeros en un Texbox

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1353
Último mensaje Julio 26, 2010, 11:15:30 am
por ANTRAX
Proceso Inverso: Ordenar los Numeros de un TextBox en forma Descendente

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1688
Último mensaje Julio 26, 2010, 12:34:30 pm
por ANTRAX