• Lunes 23 de Diciembre de 2024, 00:27

Autor Tema:  Cerrar Msn  (Leído 1141 veces)

martin campos quintero

  • Miembro MUY activo
  • ***
  • Mensajes: 113
  • Nacionalidad: 00
    • Ver Perfil
Cerrar Msn
« en: Lunes 13 de Diciembre de 2004, 07:32 »
0
Bueno pues yo estoy trabajando en una aplicación en red. Yo quiero poder cerrar aplicaciones así como el messenger desde la computadora servidor

Espero que me puedan ayudar

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Cerrar Msn
« Respuesta #1 en: Miércoles 15 de Diciembre de 2004, 09:33 »
0
Hola.

Para poder terminar un proceso en una red en otra máquina distinta a la tuya, supongo que tendrás que utilizar sockets (se podría tambien con un Exe ActiveX, imagino), comunicando dos aplicaciones: una que da la orden de cerrar determinada aplicación en una máquina y otra que corra en esa máquina y que realice la labor.

Si la aplicación 'finalizadora' es la misma que ha iniciado el proceso a finalizar,
Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Private Const PROCESS_QUERY_INFORMATION = &H400
  5. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long
  6. Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
  7.  
  8. Private lProcId As Long
  9.  
  10. Private Sub Comenzar()
  11.    lProcId = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell("Ejecutable.Exe Argumentos", vbNormalFocus))
  12.  
  13. End Sub
  14.  
  15.  
debería haber guardado el ID de proceso para posteriormente finalizarlo.
Código: Text
  1.  
  2. Private Sub Finalizar()
  3.    Dim lRc as long, lExitC as long
  4.    lRc = TerminateProcess(lProcId, lExitC)    
  5. End Sub
  6.  
  7.  

También se podrían recuperar las tareas activas identificar la que interese y finalizarla.
Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Private Type PROCESSENTRY32
  5.     dwSize As Long
  6.     cntUsage As Long
  7.     th32ProcessID As Long
  8.     th32DefaultHeapID As Long
  9.     th32ModuleID As Long
  10.     cntThreads As Long
  11.     th32ParentProcessID As Long
  12.     pcPriClassBase As Long
  13.     dwFlags As Long
  14.     szExeFile As String * 260
  15. End Type
  16. Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
  17. Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
  18. Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
  19. Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
  20.  
  21. Private sTareas() As String
  22.  
  23. Private Sub GetProcesos()
  24.    
  25.     Dim lSnapShot As Long
  26.     lSnapShot = CreateToolhelpSnapshot(2&, 0&)
  27.    
  28.     If lSnapShot <> 0 Then
  29.         Dim Proceso As PROCESSENTRY32
  30.         Proceso.dwSize = Len(Proceso)
  31.         Dim lRc As Long, lCta As Long
  32.         lRc = ProcessFirst(lSnapShot, Proceso)
  33.         Do While lRc
  34.             lCta = lCta + 1
  35.             If lCta > 1 Then
  36.                 ReDim Preserve sTareas(2, lCta)
  37.             Else
  38.                 ReDim sTareas(2, 1)
  39.             End If
  40.             sTareas(0, lCta - 1) = Proceso.th32ProcessID
  41.             sTareas(1, lCta - 1) = Left(Proceso.szExeFile, InStr(Proceso.szExeFile, Chr(0)) - 1)
  42.             lRc = ProcessNext(lSnapShot, Proceso)
  43.         Loop
  44.         CloseHandle lSnapShot
  45.     End If
  46.    
  47. End Sub
  48.  
  49.  

Son ideas, tú verás como te va. Suerte.

Abur