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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Ayuda.Auto guardar datos en txt antes de que se apague windows
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda.Auto guardar datos en txt antes de que se apague windows  (Leído 6,007 veces)
70N1


Desconectado Desconectado

Mensajes: 355


Ver Perfil
Ayuda.Auto guardar datos en txt antes de que se apague windows
« en: 23 Enero 2009, 17:36 pm »

Lo que necesito es que cuando pinches en apagar o cerrar sesion en windows, mi programa pueda hacer siertas acciones antes de cerrarse el windows.

-Detectar el cierre de windows
-Ejecutar accion
-Dejar que windows cierre


En línea

70N1
viviz02

Desconectado Desconectado

Mensajes: 52


tuentiAlert


Ver Perfil WWW
Re: Ayuda.Auto guardar datos en txt antes de que se apague windows
« Respuesta #1 en: 23 Enero 2009, 17:49 pm »

A lo mejor si pones en form_unload de tu programa que guarde esos datos al cerrar sesion o apagar el pc este forzara el cierre de la aplicacion y esta antes de cerrar realice la accion.

Prueba y comenta si funciona.


En línea

tuentiAlert - Notificador de cambios en tu perfil de tuenti.

www.tuentialert.es
Ya esta disponible la v0.3 para descargar
70N1


Desconectado Desconectado

Mensajes: 355


Ver Perfil
Re: Ayuda.Auto guardar datos en txt antes de que se apague windows
« Respuesta #2 en: 23 Enero 2009, 18:07 pm »

Lamentablemente eso ya lo e provado y nada. Al cerrar windows, cierra la aplicacion sin dejarla ni respirar.
En línea

70N1
70N1


Desconectado Desconectado

Mensajes: 355


Ver Perfil
Re: Ayuda.Auto guardar datos en txt antes de que se apague windows
« Respuesta #3 en: 23 Enero 2009, 18:21 pm »

Lo encontre. Este codigo hace que salte un mensaje cuando detecta que el pc va a ser apagado.

Codigo en un modulo
Código:
Option Explicit

' Declaraciones de funciones Api
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" ( _
    ByVal lpPrevWndFunc As Long, _
    ByVal Hwnd As Long, _
    ByVal MSG As Long, _
    ByVal wParam As Long, _
    ByVal lParam As Long) As Long

Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" ( _
    ByVal Hwnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long


'Constantes
'''''''''''''''''''''''

' mensajes de windows

Public Const GWL_WNDPROC = -4
Public Const WM_QUERYENDSESSION = &H11
Global Const WM_CANCELMODE = &H1F

Global lpPrevWndProc As Long


'Crea el Hook
'''''''''''''''''''''''''''''''''''
Public Sub Hook(Hwnd_Form As Long)
    lpPrevWndProc = SetWindowLong(Hwnd_Form, GWL_WNDPROC, AddressOf WindowProc)
End Sub

' Elimina el Hook
'''''''''''''''''''''''''''''''''''
Public Sub Unhook(Hwnd_Form As Long)
    Dim ret As Long
    ret = SetWindowLong(Hwnd_Form, GWL_WNDPROC, lpPrevWndProc)
End Sub

'Función que gestiona los mensajes
Function WindowProc(ByVal Hwnd As Long, _
                    ByVal uMsg As Long, _
                    ByVal wParam As Long, _
                    ByVal lParam As Long) As Long

    ' Mensaje de cierre de sesión o de sistema
    If uMsg = WM_QUERYENDSESSION Then
        ' el valor WM_CANCELMODE anula el cierre
        WindowProc = CallWindowProc(lpPrevWndProc, Hwnd, WM_CANCELMODE, wParam, wParam)
            MsgBox "Se intentó apagar Windows", vbInformation
            ' sale
            Exit Function
    End If
    ' continua
    WindowProc = CallWindowProc(lpPrevWndProc, Hwnd, uMsg, wParam, lParam)

End Function

Codigo del formulario
Código:
Option Explicit

Private Sub Form_Load()


    'Creamos el Hook ( Le pasa el Hwnd del formulario)
    Hook Me.Hwnd

End Sub

Private Sub Form_Unload(Cancel As Integer)
    'Eliminamos el Hook
    Unhook Me.Hwnd
End Sub

Url:http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/22.htm
En línea

70N1
Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: Ayuda.Auto guardar datos en txt antes de que se apague windows
« Respuesta #4 en: 23 Enero 2009, 19:06 pm »

Hola, probá con este code, (creo que me lo pasó  Leandro), con XP, si mal no recuerdo funcionaba bien , con windows seven no.

 Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If UnloadMode = 2 Then
        MsgBox "se esta apagando"
    End If
End Sub


Saludos

En línea

Adrian Desanti
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Ayuda.Auto guardar datos en txt antes de que se apague windows
« Respuesta #5 en: 23 Enero 2009, 21:31 pm »

jeje una vez probe ese codigo y casi me arruina la maquina, porque al apagarse y cuando salta el msgbox ya se descargaron cosas de memoria y programas vitales como el antivirus y demas, y cuando vuelve a la normalidad no estan mas cargados y queda todo medio feo  :xD

saludos.
En línea

Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: Ayuda.Auto guardar datos en txt antes de que se apague windows
« Respuesta #6 en: 23 Enero 2009, 23:01 pm »

Bueno, Seba, entonces lo descartamos hasta estar seguros, estoy probando el W7,pero en cuanto pueda lo pruebo en XP

Saludos 
En línea

Adrian Desanti
70N1


Desconectado Desconectado

Mensajes: 355


Ver Perfil
Re: Ayuda.Auto guardar datos en txt antes de que se apague windows
« Respuesta #7 en: 23 Enero 2009, 23:27 pm »

No se que pasa con el codigo que postee.

con el msgbox funciona perfectamente, detiene el reinicio. Pero si intento que ejecute mas codigo no funciona y se reinicia. alguien save que es lo que puede estar pasando?.

Esto funciona perfectamente.
Código:
Function WindowProc(ByVal Hwnd As Long, _
                    ByVal uMsg As Long, _
                    ByVal wParam As Long, _
                    ByVal lParam As Long) As Long

    ' Mensaje de cierre de sesión o de sistema
    If uMsg = WM_QUERYENDSESSION Then
        ' el valor WM_CANCELMODE anula el cierre
        WindowProc = CallWindowProc(lpPrevWndProc, Hwnd, WM_CANCELMODE, wParam, wParam)
           

MsgBox "Se intentó apagar Windows", vbInformation ----->Se ejecuta despues de detener el apagado
           

' sale
            Exit Function
    End If
    ' continua
    WindowProc = CallWindowProc(lpPrevWndProc, Hwnd, uMsg, wParam, lParam)

Pero aki no me detiene el apagado.
Código:
Function WindowProc(ByVal Hwnd As Long, _
                    ByVal uMsg As Long, _
                    ByVal wParam As Long, _
                    ByVal lParam As Long) As Long

    ' Mensaje de cierre de sesión o de sistema
    If uMsg = WM_QUERYENDSESSION Then
        ' el valor WM_CANCELMODE anula el cierre
        WindowProc = CallWindowProc(lpPrevWndProc, Hwnd, WM_CANCELMODE, wParam, wParam)
           

call myfunction ---------->>> ya no detiene el apagado
           

' sale
            Exit Function
    End If
    ' continua
    WindowProc = CallWindowProc(lpPrevWndProc, Hwnd, uMsg, wParam, lParam)
En línea

70N1
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Ayuda.Auto guardar datos en txt antes de que se apague windows
« Respuesta #8 en: 24 Enero 2009, 04:46 am »

Podrias usar Sleep para detener unos milisegundos el SO en el codigo ya provisto anteriormente y asi dejar ejecutar la parte de tu codigo.
« Última modificación: 24 Enero 2009, 19:54 pm por ░▒▓BlackZeroҖ▓▒░ » En línea

The Dark Shadow is my passion.
70N1


Desconectado Desconectado

Mensajes: 355


Ver Perfil
Re: Ayuda.Auto guardar datos en txt antes de que se apague windows
« Respuesta #9 en: 25 Enero 2009, 20:47 pm »

En cuanto pruebe aviso de los resultados
En línea

70N1
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Topic ASM « 1 2 »
Sugerencias y dudas sobre el Foro
eCORE.GEDZAC 12 5,359 Último mensaje 14 Julio 2008, 02:24 am
por sirdarckcat
no entiendo topic fuera de sus limites?
Foro Libre
jamescua 1 1,576 Último mensaje 21 Diciembre 2011, 02:10 am
por jamescua
El Rey, de nuevo Trending Topic mundial
Noticias
wolfbcn 0 1,525 Último mensaje 18 Abril 2012, 17:42 pm
por wolfbcn
(OFF-TOPIC) ¿Hay mosquitos de 4-5 cm de tamaño? « 1 2 »
Foro Libre
Eleкtro 14 6,823 Último mensaje 14 Agosto 2018, 03:27 am
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines