Autor
		 | 
		
			Tema: como hacer que no corre un proceso  (Leído 4,618 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
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	 |  
 
	 
	
 
			 
			   |