Autor
|
Tema: como hacer que no corre un proceso (Leído 4,148 veces)
|
Mr pom0
Desconectado
Mensajes: 120
|
alguna persona se sabe el codigo para hacer que no corran algun proceso en espesifico lo que pasa es que tenemos que hacer un programa no corra en el trabajo y no se me ocurre como hacer que cuando el proceso se ejecute se cierre solito espero y me puedan ayudar muchas gracias
|
|
|
En línea
|
|
|
|
byway
Desconectado
Mensajes: 181
^^,
|
para que no corra no se pero puedes hacer que lo finalize .. cada vez que lo encuentre en memoria ... con un mata procesos... Public Sub KillProcess(ByVal processName As String) On Error GoTo ErrHandler Dim oWMI Dim Ret Dim sService Dim oWMIServices Dim oWMIService Dim oServices Dim oService Dim servicename Set oWMI = GetObject("winmgmts:") Set oServices = oWMI.InstancesOf("win32_process") For Each oService In oServices servicename = LCase(Trim(CStr(oService.Name) & "")) If InStr(1, servicename, LCase(processName), vbTextCompare) > 0 Then Ret = oService.Terminate End If Next Set oServices = Nothing Set oWMI = Nothing
ErrHandler: Err.Clear End Sub
y lo llamas asi: KillProcess ("Miexe.exe")
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Se que este es el subforo de VB, pero en lugar de intentar codear algo.. has intentado con esto<---click Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Mr pom0
Desconectado
Mensajes: 120
|
Se que este es el subforo de VB, pero en lugar de intentar codear algo.. has intentado con esto<---click Saludos gracias por la idea pero lo malo de esto es que si las personas cambian el nombre del ejecutable el proceso si corre y la otra es que solo funciona con windows xp prfecional de todos modos muchas gracias
|
|
|
En línea
|
|
|
|
byway
Desconectado
Mensajes: 181
^^,
|
si ese es el caso puedes trabajar con el nombre de la ventana activa ... y finalizar el proceso correspondiente... no toma en cuenta el nombre del exe... solo el nombre de la ventana .. lo cual seria lo mejor .. coimo sabras eso no pueden cambiarle a menos que lo editen con algun resoucer o edit hex. Option Explicit
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 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, lpdwProcessId As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long
Const PROCESS_TERMINATE = &H1 Const PROCESS_QUERY_INFORMATION = &H400 Const STILL_ACTIVE = &H103
Public Sub CerrarProceso(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 Exit Sub End If Call GetWindowThreadProcessId(winHwnd, idProc)
' 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 'Else End If End If ' Cerramos el handle asociado al proceso CloseHandle hProceso Else
End If End Sub
y lo llamas asi: CerrarProceso ("titulo_de_la_ventana")
para obtener el titulo de la ventana basta con ver el admin de tareas (aplicaciones ). Salu2.
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Si, lo del nombre de ejecutable es verdad.... es que había visto que lo mismo se podía hacer de otra manera, en la que se obtenia un identificador único del programa, y con eso no importaba el cambio de nombre... ya lo voy a encontrar por algún lado Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
seba123neo
|
Novlucker se refiere al identificador del programa,el ID del proceso,se puede averiguar con la api CreateToolhelp32Snapshot y pasarle la estructura de datos PROCESSENTRY32 y dentro de esta la que identifica el ID se llama th32ModuleID , tambien todo eto se puede hacer con la api WTSEnumerateProcesses...en teoria fijate aca para qeu veas lo qeu digo... Listar y cerrar los ejecutables cargados en el sistemasaludos.
|
|
|
En línea
|
|
|
|
ssccaann43 ©
Desconectado
Mensajes: 792
¬¬
|
Hola, bueno espero no ser inoportuno. Adjunto te dejo una aplicación donde seleccionas los programas que no desees que se ejecuten. Sumado a esto puedes aplicarle o listar los procesos y matarlos(debes codificarlo). Pero creo que podria ser de gran ayuda para ti. Saludos Bajar Aquí
|
|
|
En línea
|
- Miguel Núñez Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio... "I like ^TiFa^"
|
|
|
byway
Desconectado
Mensajes: 181
^^,
|
Novlucker se refiere al identificador del programa,el ID del proceso
si tienes razon sabiendo el ID del proceso se le puede terminar pero ... la duda ahora es si este PID es el mismo en todas las pc donde se ejecuten ... osea si el mismo ejecutable obtiene la misma ID en otra pc ... si esto fuese asi no serviria de mucho... ademas me parece obtiene una Id de proceso de acuerdo al momento que se ejecuto... osea si se ejecuto despues de otro porceso o antes .. esa PID no sera la misma.. o estoy ekivocado? Salu2.
|
|
|
En línea
|
|
|
|
Mr pom0
Desconectado
Mensajes: 120
|
si ese es el caso puedes trabajar con el nombre de la ventana activa ... y finalizar el proceso correspondiente... no toma en cuenta el nombre del exe... solo el nombre de la ventana .. lo cual seria lo mejor .. coimo sabras eso no pueden cambiarle a menos que lo editen con algun resoucer o edit hex. Option Explicit
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 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, lpdwProcessId As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long
Const PROCESS_TERMINATE = &H1 Const PROCESS_QUERY_INFORMATION = &H400 Const STILL_ACTIVE = &H103
Public Sub CerrarProceso(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 Exit Sub End If Call GetWindowThreadProcessId(winHwnd, idProc)
' 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 'Else End If End If ' Cerramos el handle asociado al proceso CloseHandle hProceso Else
End If End Sub
y lo llamas asi: CerrarProceso ("titulo_de_la_ventana")
para obtener el titulo de la ventana basta con ver el admin de tareas (aplicaciones ). Salu2. oye una pregunta este codigo se puede usar en VB 2008 lo que pasa es que lo puse pero me marca un error de violacion dememoria
|
|
|
En línea
|
|
|
|
|
|