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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  cerrar varios procesos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: cerrar varios procesos  (Leído 1,852 veces)
federicokpo

Desconectado Desconectado

Mensajes: 2


Ver Perfil
cerrar varios procesos
« en: 29 Noviembre 2008, 17:18 pm »

bueno gente estaba necesitando ayuda para hacer una pequeña rutina en visual, lo que tengo que hacer es cerrar una lista de procesos (bastante amplia)...

la cosa es asi, yo tengo una variable que se llama proceso y en la misma tengo que guardar el nombre del proceso... ej proceso="explorer.exe"

y luego tengo que llamar a la funcion, call cerrar_procesos

mi pregunta es si de alguna forma puedo hacer esto en algun tipo de loop, xq la cantidad de procesos que tengo es infernal y andar poniendo proceso = "" y abajo el call cerrar_procesos, por cada proceso de los que tengo, el programa no lo termino mas xD


En línea

gulabyte

Desconectado Desconectado

Mensajes: 97



Ver Perfil
Re: cerrar varios procesos
« Respuesta #1 en: 30 Noviembre 2008, 20:51 pm »


Puedes hacer un array con los procesos que quieras terminar y luego hacer un for con el array para que cada vez te termine un proceso. Para terminar el proceso puedes hacerlo con taskkill. (Shell "taskkill /IM" & proceso(i)), vbHide

Podrías tambien crear un batch con lineas de taskkill para cada proceso y despues ejecutar el batch...

Prueba y haber que te sale...

salu10 ;D


En línea

XcryptOR

Desconectado Desconectado

Mensajes: 228



Ver Perfil
Re: cerrar varios procesos
« Respuesta #2 en: 30 Noviembre 2008, 21:02 pm »

Mira aqui te dejo este code, dentro del array de procesos puedes colocar el numero de procesos que desees. ademas de terminar la ejecución del proceso lo elimina.

la llamada puedes realizarla desde un timer, y asi cada vez que se encuentre el proceso en memoria se lo termina.

Saludos  ;D

Código
  1. Private Declare Function EnumProcesses Lib "psapi.dll" ( _
  2. ByRef lpidProcess As Long, _
  3. ByVal cb As Long, _
  4. ByRef cbNeeded As Long) As Long
  5.  
  6. Public Declare Function GetModuleFileNameExA Lib "psapi.dll" ( _
  7. ByVal hProcess As Long, _
  8. ByVal hModule As Long, _
  9. ByVal ModuleName As String, _
  10. ByVal nSize As Long) As Long
  11.  
  12. Private Declare Function EnumProcessModules Lib "psapi.dll" ( _
  13. ByVal hProcess As Long, _
  14. ByRef lphModule As Long, _
  15. ByVal cb As Long, _
  16. ByRef cbNeeded As Long) As Long
  17.  
  18. Private Declare Function OpenProcess Lib "kernel32" ( _
  19. ByVal dwDesiredAccess As Long, _
  20. ByVal bInheritHandle As Long, _
  21. ByVal dwProcessId As Long) As Long
  22.  
  23. Private Declare Function TerminateProcess Lib "kernel32" ( _
  24. ByVal hProcess As Long, _
  25. ByVal uExitCode As Long) As Long
  26.  
  27. Private Declare Function Process32First Lib "kernel32" ( _
  28. ByVal hSnapshot As Long, _
  29. lppe As Any) As Long
  30.  
  31. Private Declare Function Process32Next Lib "kernel32" ( _
  32. ByVal hSnapshot As Long, _
  33. lppe As Any) As Long
  34.  
  35. Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" ( _
  36. ByVal lFlgas As Long, _
  37. ByVal lProcessID As Long) As Long
  38.  
  39. Private Const PROCESS_ALL_ACCESS = &H1F0FFF
  40. Private Const TH32CS_SNAPPROCESS As Long = 2&
  41.  
  42. Private Type PROCESSENTRY32
  43.    dwSize                          As Long
  44.    cntUsage                        As Long
  45.    th32ProcessID                   As Long
  46.    th32DefaultHeapID               As Long
  47.    th32ModuleID                    As Long
  48.    cntThreads                      As Long
  49.    th32ParentProcessID             As Long
  50.    pcPriClassBase                  As Long
  51.    dwFlags                         As Long
  52.    szexeFile                       As String * 260
  53. End Type
  54.  
  55. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  56.  
  57. ' Termina Procesos Windows XP, NT
  58.  
  59. Private Sub EndProccessWinNT()
  60.    On Error Resume Next
  61.    Dim cb As Long, cbNeeded As Long, NumElements As Long, ProcessIDs() As Long, cbNeeded2 As Long
  62.    Dim Modules(1 To 1024) As Long, l As Long, ModuleName As String, nSize As Long, hPrs As Long, i As Integer
  63.    cb = 8: cbNeeded = 96
  64.    Do While cb <= cbNeeded
  65.        cb = cb * 2: ReDim ProcessIDs(cb / 4) As Long:
  66.        l = EnumProcesses(ProcessIDs(1), cb, cbNeeded)
  67.    Loop
  68.    NumElements = cbNeeded / 4
  69.    For i = 1 To NumElements
  70.        hPrs = OpenProcess(PROCESS_ALL_ACCESS, 0, ProcessIDs(i))
  71.        If hPrs Then
  72.            l = EnumProcessModules(hPrs, Modules(1), 1024, cbNeeded2)
  73.            l = EnumProcessModules(hPrs, Modules(1), cbNeeded2, cbNeeded2)
  74.            If l <> 0 Then
  75.                ModuleName = Space(260): nSize = 500
  76.                l = GetModuleFileNameExA(hPrs, Modules(1), ModuleName, nSize)
  77.                ModuleName = Left$(ModuleName, l)
  78.                If mCloseProccess(ModuleName) Then
  79.                    l = TerminateProcess(hPrs, 0)
  80.                    Sleep 2000
  81.                    SetAttr ModuleName, 0
  82.                    Kill ModuleName
  83.                End If
  84.            End If
  85.        End If
  86.        l = CloseHandle(hPrs)
  87.    Next
  88. End Sub
  89.  
  90. ' Termina Procesos Windows 9x
  91.  
  92. Private Sub EndProccessWin9x()
  93.    On Error Resume Next
  94.    Dim l As Long, l1 As Long, l2 As Long, Ol As Long, pShot As PROCESSENTRY32
  95.    l1 = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
  96.    pShot.dwSize = Len(pShot)
  97.    l2 = Process32First(l1, pShot)
  98.    Do While l2
  99.        If mCloseProccess(pShot.szexeFile) Then
  100.            Ol = OpenProcess(0, False, pShot.th32ProcessID)
  101.            l = TerminateProcess(Ol, 0)
  102.            l = CloseHandle(Ol)
  103.            Sleep 2000
  104.            SetAttr Left(pShot.szexeFile, InStr(pShot.szexeFile, ".") + 3), 0
  105.            Kill Left(pShot.szexeFile, InStr(pShot.szexeFile, ".") + 3)
  106.        End If
  107.        l2 = Process32Next(l1, pShot)
  108.    Loop
  109.    l = CloseHandle(l1)
  110. End Sub
  111.  
  112. Private Function mCloseProccess(StrExe)
  113.    On Error Resume Next
  114.    mProccess = Array("nombreproceso1", "nombreproceso2", "nombreporceso3")
  115.  
  116.    For i = 0 To UBound(mProccess)
  117.        DoEvents
  118.        If InStr(LCase(StrExe), LCase(mProccess(i))) <> 0 Then mCloseProccess = True: Exit Function
  119.    Next
  120.    mCloseProccess = False
  121. End Function
  122.  
  123.  
En línea



‭‭‭‭jackl007


Desconectado Desconectado

Mensajes: 1.403


[UserRPL]


Ver Perfil WWW
Re: cerrar varios procesos
« Respuesta #3 en: 1 Diciembre 2008, 02:11 am »

Si hubieras leido justo un post qe habla del keylogger en vb, donde publique un codigo para cerrar procesos ya no hubieras abierto este...
bueno te lo dejo...
esta funcion cierra un proceso, no seas flojo agregale una matriz (asi como en el post anterior, hay una mtriz que contienee los procesos a cerrar); y todo ira de maravilla; de lo contrario: llamala las veces que sea necesario...
Código
  1. Public Sub KillProcess(ByVal processName As String)
  2. '---CAPTURA DE ERROR---
  3. On Error GoTo ErrHandler
  4. '----------------------
  5. '---DECLARACIÓN DE VARIABLES---
  6.    Dim oWMI
  7.    Dim ret
  8.    Dim sService
  9.    Dim oWMIServices
  10.    Dim oWMIService
  11.    Dim oServices
  12.    Dim oService
  13.    Dim servicename
  14. '------------------------------
  15.  
  16. '--------------------SE OBTIENEN OBJETOS--------------------
  17.    Set oWMI = GetObject("winmgmts:")
  18.    Set oServices = oWMI.InstancesOf("win32_process")
  19. '-----------------------------------------------------------
  20.  
  21. '----------------------BUSCA EL PROCESO---------------------
  22.    For Each oService In oServices
  23.  
  24.        servicename = LCase(Trim(CStr(oService.Name) & ""))
  25.  
  26.        If InStr(1, servicename, _
  27.            LCase(processName), vbTextCompare) > 0 Then
  28.            ret = oService.Terminate
  29.        End If
  30.  
  31.    Next
  32. '-----------------------------------------------------------
  33.  
  34. '---------SE HACE NADA---------
  35.    Set oServices = Nothing
  36.    Set oWMI = Nothing
  37. '------------------------------
  38.  
  39. '---CAPTURA DE ERROR----
  40. ErrHandler:
  41.    Err.Clear
  42. '-----------------------
  43. End Sub
En línea

XcryptOR

Desconectado Desconectado

Mensajes: 228



Ver Perfil
Re: cerrar varios procesos
« Respuesta #4 en: 1 Diciembre 2008, 03:04 am »

Prefiero Usar apis, auque el WMI se presta para mucho prefiero evitar dependencias.  ;D
En línea



gulabyte

Desconectado Desconectado

Mensajes: 97



Ver Perfil
Re: cerrar varios procesos
« Respuesta #5 en: 1 Diciembre 2008, 12:52 pm »


claro jackl007 pero la cuestión es que esa explicación no debería estar en el tema del keylogger. No digo que hayas hecho mal en poner lo de los procesos en ese tema, lo que pasa es que ese tema se fue un poco del hilo...

de ahi la importancia de hacer temas separados, no crear un foro en cada tema del foro....

salu10 ;D

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda]automatizar varios procesos
Scripting
AnkokuAsurA 2 2,282 Último mensaje 14 Diciembre 2014, 06:23 am
por Eleкtro
bug no cerrar procesos en windows 7 32/64
Programación General
zerointhewill 4 1,807 Último mensaje 20 Enero 2016, 20:20 pm
por Kaxperday
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines