• Miércoles 6 de Noviembre de 2024, 02:55

Autor Tema:  Matar Proceso  (Leído 3765 veces)

Code

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
    • http://kickme.to/shaolin
Matar Proceso
« en: Miércoles 25 de Febrero de 2004, 01:47 »
0
Hola estoy cansado de buscar :unsure:  como puedo eliminar un proceso  :devil:  :devil:  desde vb

He encontrado cosas como buscar la ventana del programa y con el key event una especie de alt +f4  :alien: pero el programa q quiero KILL no tiene aspecto fisico.. es decir q no tiene ventana.. pero se esta ejecutando. :angry:
 :lightsabre:  :lightsabre:  :comp:

Conoce alguien algun modo de matar ese tipo de proceso? aunque sea en MSDOS por comandos.  :scream:  :scream:
gracias!!!!!!!!!!!  :hola:

javirues

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Re: Matar Proceso
« Respuesta #1 en: Miércoles 25 de Febrero de 2004, 17:22 »
0
Tienes que utilizar la funcion ExitProcess  del API Windows, deberas saber el codigo del proceso a matar quiza te sirva GetExitCodeProcess.
Suerte

DaVId925

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Matar Proceso
« Respuesta #2 en: Jueves 26 de Febrero de 2004, 02:37 »
0
...yo lo haria con las apis findwindow y postmessage...pero solo funciona con ventanas abiertas
por ejemplo si quiero cerrar las ventanas del explorer de internet.Pones un timer y este codigo :P chauu


Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Const WM_CLOSE = &H10

dim ventana

Private Sub Timer1_Timer()
ventana = FindWindow("IEFrame",vbnullstring)
If ventana<> 0 Then
    PostMessage ventana, WM_CLOSE, 0, 0
End If
End Sub
[size=109]DaVid[/color][/size]

Code

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
    • http://kickme.to/shaolin
Re: Matar Proceso
« Respuesta #3 en: Jueves 26 de Febrero de 2004, 15:50 »
0
La segunda idea no me vale porq no tiene ventana q buscar (pero gracias)  :kicking:  :kicking:
La primera he estado buscando y he encontrado esto:

Private Const STILL_ACTIVE = &H103
Private Const PROCESS_QUERY_INFORMATION = &H400
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)
Dim lngPid As Long, lngRc As Long
Public Sub SincMiProceso(ByVal ExeFile As String)
    On Error GoTo Err_Sinc
    lngPid = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(ExeFile, vbNormalFocus))
    Do
        GetExitCodeProcess lngPid, lngRc
''        ExitProcess lngPid
        DoEvents
    Loop While lngRc = STILL_ACTIVE
    Exit Sub
Err_Sinc:
    MsgBox "Fallo sincronizando pgm '" & ExeFile & "'." & String(2, vbCrLf) _
    & "(" & Err.Number & ") " & Err.Description, vbCritical, "Sincronizar"
End Sub
Private Sub Command1_Click()
    SincMiProceso ("C:\windows\notepad.exe")
End Sub
Private Sub Command2_Click()
   ExitProcess lngRc
End Sub
 :alien:  :alien:  :alien:
se supone q con    ExitProcess lngRc cerraria dicha aplicacion pero lo q se cierra es el visual  :blink:  :blink:  :blink: ayudaaaaaaaaaaa  &lt;_&lt;  &lt;_&lt;

se os ocurre algo?

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Matar Proceso
« Respuesta #4 en: Jueves 26 de Febrero de 2004, 16:41 »
0
Hola Code.

El método SincMiProceso del código sirve para ejecutar un programa de forma síncrona, de forma que la ejecución del código no continúa hasta que el proceso recién iniciado finaliza (lngRc <> STILL_ACTIVE)...

El problema que tienes está en el api ExitProcess: usa la función TerminateProcess para finalizar un proceso cuyo id conoces (si el proceso lo has iniciado tú con OpenProcess, el id es el valor devuelto por la función).

Fíjate en el ejemplo, arranca el notepad y pasados cinco segundos lo finaliza:
Código: Text
  1.  
  2. Private Const PROCESS_QUERY_INFORMATION = &H400
  3. Private Declare Function OpenProcess Lib &#34;kernel32&#34; (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long
  4. Private Declare Function TerminateProcess Lib &#34;kernel32&#34; (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
  5.  
  6. Private Declare Sub Sleep Lib &#34;kernel32&#34; (ByVal dwMilliseconds As Long)
  7.  
  8. Private Sub Command1_Click()
  9.    
  10.     Dim lngPid As Long, lngRc As Long
  11.     lngPid = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(&#34;C:&#092;windows&#092;notepad.exe&#34;, vbNormalFocus))
  12.    
  13.     Sleep 5000
  14.    
  15.     TerminateProcess lngPid, lngRc
  16.  
  17. End Sub
  18.  
  19.  

Espero que te hayas aclarado un poco más... Ahora sólo tienes que investigar cómo conseguir el pId de un proceso que no ha sido iniciado por ti para poder finalizar cualquier proceso.

Suerte.

Code

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
    • http://kickme.to/shaolin
Re: Matar Proceso
« Respuesta #5 en: Domingo 29 de Febrero de 2004, 02:20 »
0
Hola.
muchas gracias, pero lo de encontrar el pId del proceso lo he dejado porq me estaba volviendo loco :blink:  :blink:  :blink:

He ecnontrado en una pagina francesa esto :smartass:  :smartass:

mata el proceso dando el nombre del .EXE  :devil:  :devil:  :devil:



Pero gracias a todos por ayudar  :hola:  :hola:  :kicking:  :kicking:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

nrvz

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Matar Proceso
« Respuesta #6 en: Miércoles 12 de Enero de 2005, 07:07 »
0
loco, muchas gracias. Yo tambien andaba buscando ese codigo... probe mil formas pero esto me salvo la vida.

Gracias.  :D
_____________________________________
Guillermo Narváez
Estudiante Ing. en Sistemas
Argentina