| ID | Asunto | Fecha | Nick | |
| 40938 | Cerrar una aplicacion desde codigo | 29/04/08 15:48 | karensol | |  |
Hola
logre abrir una aplicacion y tambien tengo el codigo para abrir un archivo con cualquier extencion.
mi problema ahora es que necesito saber como puedo cerrar esa aplicacion, he encontrado bastante codigo en internet pero ninguno me resulta , estoy tratando con este Public Declare Function OpenProcess _ Lib "kernel32.dll" (ByVal dwDesiredAccessas As Long, _ ByVal bInheritHandle As Long, _ ByVal dwProcId As Long) As Long
Public Declare Function GetWindowThreadProcessId _ Lib "user32" (ByVal HWnd As Long, _ ByVal lpdwProcessId As Long) As Long
'Constante para coger permiso completo:
Private Const PROCESS_ALL_ACCESS = &H1F0FFF
'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, ByVal lpExitCode As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" _ (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject _ As Long) As Long
' Private Declare Function GetWindowThreadProcessId Lib "user32" () _ ' (ByVal hwnd As Long, ByVal lpdwProcessId As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long
Private Declare Function CloseWindow Lib "user32" (ByVal hwnd As Long) As Long
Const PROCESS_TERMINATE = &H1 Const PROCESS_QUERY_INFORMATION = &H400 Const STILL_ACTIVE = &H103
Public Sub CerrarProceso(ByVal TítuloVentana As String) Dim hProceso As Long Dim lEstado As Long Dim idProc As Long Dim winHwnd As Long
winHwnd = FindWindow(vbNullString, TítuloVentana) If winHwnd = 0 Then Debug.Print("El proceso no está abierto") : Exit Sub End If Call GetWindowThreadProcessId(winHwnd, idProc) ========== ERRRORRR
' Obtenemos el handle al proceso hProceso = OpenProcess(PROCESS_TERMINATE Or _ PROCESS_QUERY_INFORMATION, 0, idProc) If hProceso <> 0 Then ' Comprobamos estado del proceso GetExitCodeProcess(hProceso, lEstado) If lEstado = STILL_ACTIVE Then ' Cerramos el proceso If TerminateProcess(hProceso, 9) <> 0 Then Debug.Print("Proceso cerrado") Else Debug.Print("No se pudo matar el proceso") End If End If ' Cerramos el handle asociado al proceso CloseHandle(hProceso) Else Debug.Print("No se pudo tener acceso al proceso") End If End Sub
Tira el siguiente error :
"Intento de leer o escribir en la memoria protegida. A menudo, esto indica que hay otra memoria dañada."
y.... he probado tanto y no he podido si alguien pudiese ayudarme estare eternamente agradecida |
|
| ID | Asunto | Fecha | Nick | |
| 40944 | Re: Cerrar una aplicacion desde codigo (Resp: 40938) | 29/04/08 17:38 | Ciper | | |
bueno veo ke te refieres a los procesos asi ke para abrir .. es facil ... y matar(finalizar) mas aun!: para abrir: Dim proceso As New Process proceso.StartInfo.FileName = ruta del programa o proceso proceso.Start() para finalizarlo: Dim procesos() As Process = Process.GetProcessesByName(prog) 'donde prog es el nombre del proceso procesos(0).CloseMainWindow() 'intenta cerrar ese proceso If procesos(0).HasExited = False Then 'si no se cerro antes... matar el proceso procesos(0).Kill() procesos(0).Close() End If salu2! 
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 40945 | Re: Cerrar una aplicacion desde codigo (Resp: 40944) | 29/04/08 18:01 | karensol | |  |
MUCHAS GRACIAS CIPER
ME ayudaste bastante. despues de tanto investigar y probar , tu me diste la solucion muy agradecida
[Editado: karensol, 29/04/2008 18:02:54]
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |