Visual Basic - Proceso Crítico de Ejecutable

Life is soft - evento anual de software empresarial
 
Vista:

Proceso Crítico de Ejecutable

Publicado por Raymond J. Sutil Delgado (33 intervenciones) el 02/03/2006 14:52:53
Hola Amigos...

Hace algún tiempo tengo una interrogante que no he podido decifrar.
¿Cómo hago para que mis aplicaciones realizadas en Visual Basic, se han un proceso crítico (Es decir que no se puedan cerrar por el administrador de tareas de windows)?

Por favor si alguien posee el código API o de cualquier tipo, que me resuelva esta problema, me sería de gran ayuda a mí, como a otros que de seguros desean despejar esta oscuridad en la programación...

Gracias a todos
Raymond
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Registrar servicio

Publicado por Zoto (55 intervenciones) el 05/03/2006 15:58:47
Hola Raymond.

Andaba mirando los mensajes pasados y encontré el tuyo.
Espero que no sea demasiado tarde para responder, pero creo que tengo algo que te podría ayudar.

Lo que solicitas puede hacerse como lo indico a continuación.
Básicamente, el código que te entrego seguidamente utiliza 2 APIs para registrar el proceso de tu aplicación como una del sistema.

Para hacerlo, simplemente, pega el código siguiente en un módulo (yo lo llamo mdRegService.BAS):

'----------------------------------------------------------------------------
'MÓDULO mdRegService.BAS
'----------------------------------------------------------------------------

'---------------------------
'Nombre: mdRegService.BAS
'Descripción: Módulo simple que permite el registro/desregistro de
'un proceso como servicio del sistema.
'Creador: Zoto - www.lawebdelprogramador.com - Foro Visual Basic
'AVISOS: Al registrar un proceso como Servicio del sistema, pasa a ser desapercibido por el Administrador de Tareas de Windows
'---------------------------

'---------------
'APIs
'---------------

Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long 'Devuelve la Identidad del proceso del programa
Private Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessID As Long, ByVal dwType As Long) As Long 'Registra/desregistra un proceso como Servicio dada su Identidad y la operación a llevar a cabo (0-> Desregistrar (Proceso) 1-> Registrar (Servicio))

'---------------
'Constantes (de la API RegisterServiceProcess)
'---------------
'Parámetro dwType:
Const RSP_SIMPLE_SERVICE = 1 'Registra proceso
Const RSP_UNREGISTER_SERVICE = 0 'Desregistra proceso

'---------------
'Variables
'---------------

Dim prId As Long 'Almacena la Identidad del proceso que representa el programa

'---------------
'Funciones
'---------------

'Registra el programa como Servicio del sistema dando su Identidad.
'Devuelve el valor devuelto por la API RegisterServiceProcess

Public Function RegMeService() As Long
prId = GetCurrentProcessId()
RegMeService = RegisterServiceProcess(prId, RSP_SIMPLE_SERVICE)
End Function

'Desregistra el programa y hace que deje de ser Servicio, dando su Identidad.
'Devuelve el valor devuelto por la API RegisterServiceProcess

Public Function UnRegMeService() As Long
prId = GetCurrentProcessId()
UnRegMeService = RegisterServiceProcess(prId, RSP_UNREGISTER_SERVICE)
End Function

'----------------------------------------------------------------------------
'MÓDULO mdRegService.BAS
'----------------------------------------------------------------------------

A partir de aquí, tan solo haz lo siguiente en cualquier parte del código (preferentemente en el Form_Load del Formulario principal o en el procedimiento Main):

'__________________________________código form/main

'Para registrar tu aplicación como proceso del sistema:

RegMeService

'Para quitar tu aplicación de su registro como proceso del sistema:

UnRegMeService

'__________________________________código form/main

En teoria, este código debería funcionarte.
Si no lo hace de manera correcta, escribe aquí e intentaré resolver el problema.

Espero que te ayude. Hasta otra.

Zoto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar