Autor
|
Tema: Evitar ejecucion de programa. (Leído 5,775 veces)
|
Gorky
|
Buenas foreros. Me preguntaba si seria posible evitar que un programa se ejecute. Pero no mirar cada cierto tiempo si dicho programa esta en ejecucion y matarlo. Sino algo asi como interceptar que se va a ejecutar y evitarlo. Dudo mucho que se pueda hacer o al menos en VB. Si alguien tiene una idea al respecto por favor compartidla.
|
|
|
En línea
|
|
|
|
Krnl64
Desconectado
Mensajes: 169
Exception 0x00005
|
Si se puede. Puedes buscar la clase de la ventana abierta y despues enviarle un mensaje WM_SYSCOMMAND y SC_CLOSE. De esta manera, no cierras el proceso sino que impides la ejecucion de esa clase. Un ejemplo ''Coded by Krnl64 '' Conserva esta cabecera por favor
Const gcClassnameMSIExplorer = "IEFrame" '' clase del Internet Explorer
Const SC_CLOSE = &HF060& Const WM_SYSCOMMAND = &H112 Dim cerrar&
cerrar = FindWindow(gcClassnameMSIExplorer, vbNullString)
if cerrar <> NULL then
Call SendMessage(cerrar, WM_SYSCOMMAND, SC_CLOSE, ByVal 0&)
end if
Espero haberte servido de ayuda. Salu2
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Colaborador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Buenas foreros. Me preguntaba si seria posible evitar que un programa se ejecute. Pero no mirar cada cierto tiempo si dicho programa esta en ejecucion y matarlo. Sino algo asi como interceptar que se va a ejecutar y evitarlo. Dudo mucho que se pueda hacer o al menos en VB. Si alguien tiene una idea al respecto por favor compartidla.
Podes hacerlo en modo Usuario: tenes que inyectar codigo en todos los procesos e interceptar la funcion de creacion (CreateProcess).
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Gorky
|
Muchas gracias. Pues es algo que creia que no se podia hacer.
Krnl64 no estoy muy familiarizado con las clases. Las he oido nombrar en muchas ocasiones pero no se exactamente lo que son. Por lo poco que se puedo intuir que es algo como una libreria: un mismo elemento comun que usan varios programas. Y si mi intuicion es correcta, si impides la ejecucion de una clase no se cerraran tambien el resto de procesos que dependan de ella? Tal vez haya hecho una mala conclusion pero espero que me saques de la duda.
Eternal Idol creo que es mas ortodoxa la opcion de Krnl64.
|
|
|
En línea
|
|
|
|
Krnl64
Desconectado
Mensajes: 169
Exception 0x00005
|
Gorky, mira es sencillo.
Evidentemente, si restringes el uso de una clase, todas las aplicaciones que la usen no funcionarán o funcionarán parcialmente.
Una clase es como un módulo .BAS solo que tiiene extension .CLS
La diferencia entre ambas es que el módulo .BAS contiene funciones, procedimientos y contstantes que tu aplicación puede usar.
Mientras que el modulo de clase .CLS estan todos los procedimientos, funciones, métodos y propiedades que ese objeto posee.
El S.O. las contiene en alguna DLL pero no se en cual.
Un ejemplo para que lo entiendas.
Ya has estado trabajando con clases.
Cuando añades 1 form nuevo al proyecto, tienes disponibles las propiedades Name, Caption, Appearance, etc
Y tambien los métodos Show, Hide, Move, Refresh, etc
Estas propiedades y métodos estan almacenados en una clase llamada ThunderRT6Main.
Si creas 1 aplicacion con 1 form y 1 commandbutton para salir de ella, al ver las clases que usa el proyecto, te saldran las clases ThunderRT6Main y ThunderRT6Commandbutton.
VB nos permite desarrollar clases propias con eventos, métodos, propiedades, etc o mejorar las existentes
Espero haberte ayudado
Salu2
|
|
|
En línea
|
|
|
|
Gorky
|
Perfecto Krnl64. Muchas gracias por la aclaracion. Ahora unas preguntas:
1.- Como puedo ver las clases que usa un programa ya compilado?
2.- Una vez que tenga la lista de clases que usa, deberia elegir una que, o bien haya sido diseñada por los creadores de ese software para que no la use nadie mas, o bien una que use poco comun. Me equivoco?
3.- Si restrinjo el uso de una clase, el proceso que quiero que no arranque y todos los que esten haciendo uso de ella, que les ocurre? Se cierran sin mas? Dan un mensaje de error?
|
|
|
En línea
|
|
|
|
Pseudoroot
Desconectado
Mensajes: 839
|
creo que tambien se podria hacer, con una especie de dll hook
|
|
|
En línea
|
|
|
|
Krnl64
Desconectado
Mensajes: 169
Exception 0x00005
|
Si restringes el uso de una clase, al abrirse el proceso ve que la clase no esta permitida y se cierra normal, sin dar error.
Aunque tambien se puede hacer que de error con una API.
Para ver las clases, el programa tiene que estar en ejecución y tienes que verlas 1 programa especial.
Se llama Spy++ y monitoriza todos los elementos que hay corriendo permitiendo mandarle mensajes LPARAM y WPARAM. Esta utilidad la trae VB edicion Enterprise, (no estoy seguro que la traiga otras versiones. Yo tengo la Enter
Tambien puedes buscar las clases por internet, pero yo lo hago de la forma que te dije antes, debido a que segun la versión del Software (el programa instalado) algunas cambian de clase y porque asi, se las que necesito.
Las clases de Windows y otras aplicaciones, no se pueden modificar. Solo en el caso de inyeccion (creo) y solo se modifican en memoria y en tiempo de ejecucion.
La clase y Subclases de una aplicación, es como un identificador´"físico" que el S.O. utiliza para saber que esta ahi, aparte de gestionar los eventos, métodos, funciones, etc
Lee 1 poco del tema, y animate a hacer clases propias.
Tras conocer clases te podras meter en Herencia y Polimorfismo.
Salu2
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Esperar al final de la ejecucion de otro programa.
Programación Visual Basic
|
Elemental Code
|
2
|
3,580
|
14 Diciembre 2010, 03:13 am
por Elemental Code
|
|
|
punto de inicio de ejecucion de un programa
Programación C/C++
|
Abloos
|
5
|
3,404
|
16 Junio 2011, 12:25 pm
por Abloos
|
|
|
Directiva adicional de ejecución programa en c++
Programación C/C++
|
Dacer133
|
2
|
2,055
|
28 Diciembre 2014, 12:44 pm
por grandanh
|
|
|
Problema con ejecución de programa programado en C++
Programación C/C++
|
rodri81
|
1
|
1,522
|
12 Enero 2019, 02:08 am
por MAFUS
|
|
|
[Pregunta]: Evitar el envio o ejecución de consultas duplicadas en PHP
Desarrollo Web
|
Leguim
|
0
|
1,544
|
7 Mayo 2019, 22:28 pm
por Leguim
|
|