Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Mr pom0 en 3 Septiembre 2008, 02:19 am



Título: como hacer que no corre un proceso
Publicado por: Mr pom0 en 3 Septiembre 2008, 02:19 am
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


Título: Re: como hacer que no corre un proceso
Publicado por: byway en 3 Septiembre 2008, 02:51 am
para que no corra no se pero puedes hacer que lo finalize .. cada vez que lo encuentre en memoria ... con un mata procesos...
Código:
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:
Código:
KillProcess ("Miexe.exe")



Título: Re: como hacer que no corre un proceso
Publicado por: Novlucker en 3 Septiembre 2008, 03:04 am
Se que este es el subforo de VB, pero en lugar de intentar codear algo.. has intentado con esto (http://foro.elhacker.net/windows/como_limitar_el_acesso_al_messenger-t224433.0.html;msg1066048#msg1066048)<---click  :rolleyes:

Saludos


Título: Re: como hacer que no corre un proceso
Publicado por: Mr pom0 en 3 Septiembre 2008, 03:11 am
Se que este es el subforo de VB, pero en lugar de intentar codear algo.. has intentado con esto (http://foro.elhacker.net/windows/como_limitar_el_acesso_al_messenger-t224433.0.html;msg1066048#msg1066048)<---click  :rolleyes:

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


Título: Re: como hacer que no corre un proceso
Publicado por: byway en 3 Septiembre 2008, 03:25 am
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.
Código:
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:
Código:
CerrarProceso ("titulo_de_la_ventana")

para obtener el titulo de la ventana basta con ver el admin de tareas (aplicaciones ).

Salu2.


Título: Re: como hacer que no corre un proceso
Publicado por: Novlucker en 3 Septiembre 2008, 03:41 am
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


Título: Re: como hacer que no corre un proceso
Publicado por: seba123neo en 3 Septiembre 2008, 04:08 am
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 sistema (http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/42.htm)

saludos.


Título: Re: como hacer que no corre un proceso
Publicado por: ssccaann43 © en 3 Septiembre 2008, 15:18 pm
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í (http://rapidshare.com/files/142303520/bloqueador-de-programa.rar.html)


Título: Re: como hacer que no corre un proceso
Publicado por: byway en 3 Septiembre 2008, 17:36 pm
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.


Título: Re: como hacer que no corre un proceso
Publicado por: Mr pom0 en 26 Septiembre 2008, 02:39 am
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.
Código:
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:
Código:
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


Título: Re: como hacer que no corre un proceso
Publicado por: krackwar en 26 Septiembre 2008, 02:45 am

 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
Esto no es .Net!!!!!


Título: Re: como hacer que no corre un proceso
Publicado por: seba123neo en 26 Septiembre 2008, 03:00 am
 :xD :xD aparte no podes copiar y pegar un codigo de visual basic 6 en .NET porque no te va a andar...es como que yo copie un codigo de pascal a delphi y pretenda que me funcione...si bien es lo mismo,no son nada que ver uno con otro,las api's en .NET cambian los tipos de datos..y casi todo...