elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  e.CloseReason en Visual Basic 2010 WPF
0 Usuarios y 3 Visitantes están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: e.CloseReason en Visual Basic 2010 WPF  (Leído 16,985 veces)
Segurida

Desconectado Desconectado

Mensajes: 61


Ver Perfil
e.CloseReason en Visual Basic 2010 WPF
« en: 25 Mayo 2011, 11:08 am »

e.CloseReason en Visual Basic 2010 WPF no funciona, ¿se puede hacer de alguna manera, saber por qué motivo se le a dicho a la aplicación que se cierre, y evitarlo si el motivo no es apagar? Lo necesito hacer, pero no se me ocurre nada...
gracias y saludos.

Edito: Tengo importado esto:
Código
  1. Imports System.Windows.Forms.CloseReason
pero no hace nada, cuando la cierras, se cierra del todo, no lo cancela...
gracias y saludos.


« Última modificación: 25 Mayo 2011, 11:12 am por Segurida » En línea

Krähne

Desconectado Desconectado

Mensajes: 51


It can't rain all the time...


Ver Perfil
Re: e.CloseReason en Visual Basic 2010 WPF
« Respuesta #1 en: 26 Mayo 2011, 00:05 am »

1) ¿Estás trabajando con Windows Forms?
2) ¿Por qué importas una función que se encuentra en un evento? (En el caso que estés trabajando con Windows Forms).

Si logro entenderte, dices que quieres saber el motivo por el cual se ha dicho a la aplicación que se cierre, pues bien se puede saber con un simple MessageBox, en el evento FormClosing, junto a él dices que quieres evitar que se cierre tu aplicación si el motivo no es apagar, pues ni seguir hablando, te dejo el código de lo que pides.

Código
  1.    Private Sub Formulario_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
  2.  
  3.        MessageBox.Show(e.CloseReason.ToString()) 'Mostramos el motivo de cierre
  4.  
  5.        If Not e.CloseReason = CloseReason.WindowsShutDown Then 'Si no es por motivo de cierre de sistema
  6.            e.Cancel = True 'Cancelamos el cierre
  7.        End If
  8.  
  9.    End Sub

De igual manera si el usuario decide cerrarte la aplicación desde el administrador de tareas en la pestaña procesos, lo hará sin problema alguno. Por lo visto estás creando un especie de virus en vista de los temas que ya has creado, y no creo que te funcione muy bien si no te inyectas en algún proceso que no se pueda cerrar fácilmente. Tendrás que pensar un poco más allá de un simple e.Cancel = True, para lograr que el usuario no te cierre la aplicación desde el administrador de tareas.

Gruß.


En línea

Yo soy más sabio que este hombre; es posible que ninguno de los dos sepamos cosa que valga la pena, pero él cree que sabe algo, pese a no saberlo, mientras que yo, así como no sé nada, tampoco creo saberlo. Yo no tengo conciencia de saber nada.
Segurida

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Re: e.CloseReason en Visual Basic 2010 WPF
« Respuesta #2 en: 26 Mayo 2011, 00:27 am »

estoy creando una aplicación que bloquee aplicaciones mediante código md5 checkum, es decir, que compruebe todo el tiempo cada aplicación, y mire cada ruta de proceso y compruebo el md5, si coincide con unas aplicaciones (especificadas desde la aplicación, y guardados los datos en el registro) cerrar el proceso de inmediato, pero por eso necesito evitar que mi aplicación se cierre, utilizo Visual Basic 2010, y he creado una aplicación WPF, por eso importo lo otro, no es una aplicación forms, el código que me diste fue el primero que probé, es el que utilizo en forms, pero en wpf no funciona, ¿se te ocurre algo para evitar que se pueda cerrar la aplicación?
muchas gracias y saludos
En línea

Krähne

Desconectado Desconectado

Mensajes: 51


It can't rain all the time...


Ver Perfil
Re: e.CloseReason en Visual Basic 2010 WPF
« Respuesta #3 en: 26 Mayo 2011, 01:08 am »

estoy creando una aplicación que bloquee aplicaciones mediante código md5 checkum, es decir, que compruebe todo el tiempo cada aplicación, y mire cada ruta de proceso y compruebo el md5, si coincide con unas aplicaciones (especificadas desde la aplicación, y guardados los datos en el registro) cerrar el proceso de inmediato, pero por eso necesito evitar que mi aplicación se cierre, utilizo Visual Basic 2010, y he creado una aplicación WPF, por eso importo lo otro, no es una aplicación forms, el código que me diste fue el primero que probé, es el que utilizo en forms, pero en wpf no funciona, ¿se te ocurre algo para evitar que se pueda cerrar la aplicación?
muchas gracias y saludos

Para evitar el cierre en WPF tan sólo ve de igual manera al evento Closing y declara e.Cancel = True

Un ejemplo nunca viene mal:

Código
  1.    Private Sub Window_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
  2.        e.Cancel = True
  3.    End Sub

Pero... me hablas de que si se permita el cierre si el sistema quiere apagarse. Y no hay un equivalente para WPF en el caso de e.CloseReason.

Tu única solución es hookear las ventanas para obtener la razón de cierre, aquí un ejemplo.

En cuanto a lo de recibir la ruta de las aplicaciones sin errores algunos, estaba equivocado, si hay una solución, en un momento te contesto en el tema.

Gruß.
En línea

Yo soy más sabio que este hombre; es posible que ninguno de los dos sepamos cosa que valga la pena, pero él cree que sabe algo, pese a no saberlo, mientras que yo, así como no sé nada, tampoco creo saberlo. Yo no tengo conciencia de saber nada.
Segurida

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Re: e.CloseReason en Visual Basic 2010 WPF
« Respuesta #4 en: 26 Mayo 2011, 11:59 am »

me funciona para evitar que se cierre por métodos normales, pero no sirve desde la pestaña procesos, y tampoco permite al sistema apagarse, por eso necesitaba saber la razón de que la aplicación se tenga que cerrar, para permitir únicamente el apagado, a lo otro te contesté en el otro tema, el tuneup deja ver la ruta de cada proceso, instalarlo en versión de prueba si quieres, y míralo por ti mismo.
El ejemplo que me diste da errores al pasarlo a vb 2010, no me deja ejecutarlo...
saludos.
En línea

Krähne

Desconectado Desconectado

Mensajes: 51


It can't rain all the time...


Ver Perfil
Re: e.CloseReason en Visual Basic 2010 WPF
« Respuesta #5 en: 26 Mayo 2011, 12:52 pm »

me funciona para evitar que se cierre por métodos normales, pero no sirve desde la pestaña procesos, y tampoco permite al sistema apagarse, por eso necesitaba saber la razón de que la aplicación se tenga que cerrar, para permitir únicamente el apagado, a lo otro te contesté en el otro tema, el tuneup deja ver la ruta de cada proceso, instalarlo en versión de prueba si quieres, y míralo por ti mismo.
El ejemplo que me diste da errores al pasarlo a vb 2010, no me deja ejecutarlo...
saludos.

Deberías leerte un libro sobre programación en .NET y otro sobre el uso de APIS, al menos no un libro de APIS, pero si un buen tutorial.

Ya he resuelto tu duda en el otro tema.

Gruß.
En línea

Yo soy más sabio que este hombre; es posible que ninguno de los dos sepamos cosa que valga la pena, pero él cree que sabe algo, pese a no saberlo, mientras que yo, así como no sé nada, tampoco creo saberlo. Yo no tengo conciencia de saber nada.
Segurida

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Re: e.CloseReason en Visual Basic 2010 WPF
« Respuesta #6 en: 26 Mayo 2011, 13:35 pm »

El problema que tengo con las apis, y con bases de datos, es que no las entiendo, me he leído muchos libros y tutoriales, pero no las entiendo, por eso no se utilizarlas, ni apis ni bases de datos, y se que las apis sirven para mucho, pero he intentado de todo, y no me aclaro :(

¿No se puede hacer de alguna otra manera para saber porque se le dice que se cierre (incluido el matar proceso)?
gracias y saludos.
En línea

Krähne

Desconectado Desconectado

Mensajes: 51


It can't rain all the time...


Ver Perfil
Re: e.CloseReason en Visual Basic 2010 WPF
« Respuesta #7 en: 26 Mayo 2011, 14:18 pm »

El problema que tengo con las apis, y con bases de datos, es que no las entiendo, me he leído muchos libros y tutoriales, pero no las entiendo, por eso no se utilizarlas, ni apis ni bases de datos, y se que las apis sirven para mucho, pero he intentado de todo, y no me aclaro :(

¿No se puede hacer de alguna otra manera para saber porque se le dice que se cierre (incluido el matar proceso)?
gracias y saludos.

La única manera que encontré era haciendo el hook que te dije arriba. Pero, no soy experto en VB.NET por tal, no pude convertir el código. Deben haber otras alternativas seguramente, te recomiendo que visites ésta web, que si bien... está en inglés, pero... si no es tan malo tu nivel de inglés haces tu pregunta y en cuestión de minutos te tienen una respuesta.

Pensando por otro lado el motivo de cierre con el administrador de tareas, en C# funcionaba sin problemas y me bloqueaba el cierre desde el administrador de tareas pero desde la pestaña aplicaciones, no procesos. Para ello te recomiendo que busques un poco más en google sobre cómo evitar el cierre de tu aplicación con el administrador de tareas. O si no... desactiva la ejecución del administrador de tareas, para que... mientras tu aplicación esté en ejecución el administrador de tareas no pueda ser ejecutado, por ende tu aplicación no pueda ser finalizada Esto funcionando si el usuario no crea una aplicación para cerrar la tuya, o ejecuta desde la línea de comandos (CMD) el comando indicado para cerrar un proceso, que si más no recuerdo era taskkill, con X parámetros.

En fin, si en serio no quieres ser cerrado por ninguna aplicación te recomiendo que te inyectes en un proceso (cambia tu proyecto a una librería de enlace dinámica y la inyectas luego con C++ haciendo una llamada ya que la librería que estarías creando no es una librería nativa), te inyectas entonces en un proceso importante, que no pueda ser cerrado como por ejemplo: winlogon.exe y tienes una aplicación perfectamente defendida.

Ya por otro lado, si tienes problemas con las APIS, échale un vistazo a PInvoke.net... cualquier duda, de seguro allí te la quitan de encima, ojo... está en inglés también, pero un traductor nunca viene mal. Además que el uso de APIS es un tema que necesitarás dominar mucho si deseas inyectarte en alguna aplicación como te dije anteriormente.

Bueno, que va... no me sigo extendiendo, espero te sirvan de algo mis "consejos" :xD.

Gruß.
« Última modificación: 26 Mayo 2011, 14:20 pm por Krähne » En línea

Yo soy más sabio que este hombre; es posible que ninguno de los dos sepamos cosa que valga la pena, pero él cree que sabe algo, pese a no saberlo, mientras que yo, así como no sé nada, tampoco creo saberlo. Yo no tengo conciencia de saber nada.
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: e.CloseReason en Visual Basic 2010 WPF
« Respuesta #8 en: 26 Mayo 2011, 21:46 pm »

Hola,

No es la respuesta a todos tus problemas, pero échale un ojo a esto:
http://msdn.microsoft.com/en-us/library/ms748948.aspx

Así tendrás una mejor idea de cómo funciona una ventana en WPF..
En línea

neoncyber

Desconectado Desconectado

Mensajes: 90



Ver Perfil WWW
Re: e.CloseReason en Visual Basic 2010 WPF
« Respuesta #9 en: 27 Mayo 2011, 07:38 am »

Bueno, creo lo que realmente quieres hacer es evitar la finalizacion del proceso q representa tu aplicacion, pues bien, creo q para evitar q te maten el proceso por ejemplo desde es taskmanager u otra aplicacion como el process explorer, tendrias q iniciar tu aplicacion como lo hacen los procesos winlogon.exe, lsass.exe, etc.

Creo q ahi se aplicarian unos conocimientos mas "core" de lo que es la estructura de la api de windows.

Tal vez si lees la parte de procesos del libro windows internals podras comprender cuales son las cosas q hace windows internamente.

Saludos
En línea

Código
  1. #!/usr/bin/python
  2. print "Visit:"
  3. print "http:\\donkeysharp.blogspot.com"
  4.  
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Manual de Visual Basic 2010
Programación Visual Basic
snknet 4 78,136 Último mensaje 23 Noviembre 2010, 22:28 pm
por raul338
programa visual basic 2010
.NET (C#, VB.NET, ASP)
chocola 9 13,645 Último mensaje 21 Marzo 2011, 22:14 pm
por chocola
[Solucionado] visual rapida ligera y sin complementos en visual basic 2010 « 1 2 »
.NET (C#, VB.NET, ASP)
Segurida 13 13,003 Último mensaje 20 Mayo 2011, 10:08 am
por Segurida
Problema visual basic 2010
.NET (C#, VB.NET, ASP)
Problema visual basic 4 3,669 Último mensaje 2 Julio 2012, 17:00 pm
por Problema visual basic
Ayda en visual basic 2010
.NET (C#, VB.NET, ASP)
Carlos96456 3 2,774 Último mensaje 1 Junio 2020, 19:38 pm
por **Aincrad**
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines