border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

Cuenta Bancaria en EEUU
  #1 (permalink)  
Antiguo 04-07-2005, 19:30:37
Un Nuevo Amigo
 
Registrado: oct 2003
Posts: 27
mad68 Valoración +2
Predeterminado Detectar apagado del windows

Hola amigos, llevo tiempo si pasarme por el foro apesar de sus mensajes informativos sobre las mejoras, por lo que veo no solo son reales sino que ademas muy buenas y como de costumbre me alegra ver como crece esta comunidad.

Bueno voy al grano, estoy montando un sistema de volcado automatico de informacion en un repositorio comun de una red local, el proceso es muy simple cuando el usuario de la red decide apagar su puesto de trabajo, un demonio que tengo corriendo en dicho puesto, informa a un servidor del evento y el servidor si ve que se cumplen ciertas condiciones, le ordena al puesto realizar un voldado de ciertos archivos sobre un repositorio comun, lo tengo todo controlado excepto la deteccion del apagado del ordenador, ya que no encuentro la API que me lo permita.

Espero que me puedan ayudar, gracias

Salu2
Responder Con Cita
  #2 (permalink)  
Antiguo 11-07-2005, 15:26:50
Avatar de Alella
Moderador
 
Registrado: mar 2004
Ubicación: BARCELONA - ESPAÑA
Posts: 985
Alella Valoración +2
Predeterminado

Hola, q tal.

Espero que te sirva el siguiente código:

Código:
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long 
WE_SHUTDOWN = 1 
Private Const EWX_FORCE As Long = 4 

call ExitWindowsEx (WE_SHUTDOWN Or EWX_FORCE), &HFFFF
__________________
Un saludo.

Alfredo
Barcelona-España
_________________
Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #3 (permalink)  
Antiguo 12-07-2005, 17:54:14
Un Nuevo Amigo
 
Registrado: oct 2003
Posts: 27
mad68 Valoración +2
Predeterminado Detectar apagado del windows

Cita:
Empezado por Alella
Hola, q tal.

Espero que te sirva el siguiente código:

Código:
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long 
WE_SHUTDOWN = 1 
Private Const EWX_FORCE As Long = 4 

call ExitWindowsEx (WE_SHUTDOWN Or EWX_FORCE), &HFFFF
Hola muchas gracias por contestacion, pero creo que el codigo que pones es precisamente para apagar, espero no confundirme.

Yo lo que necesito es que mi programa detecte cuando el usuario da la orden de apagar el ordenador y tome el control, osea impida apagar el ordenador y realice unas operaciones antes, para unavez terminadas apagar.

Gracias.

PD. Se que tiene que existir algun evento del sistema que se pueda enganchar para monitorizarlo, igual que se hace con las ventanas o servicios.
Responder Con Cita
  #4 (permalink)  
Antiguo 12-07-2005, 21:43:40
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.271
acalanto ha deshabilitado la reputación
Predeterminado

Prueba a utilizar el evento QueryUnload del (Por ejemplo) formulario principal de la aplicación. En este evento puedes poner el código necesario para fnalizar la aplicación de forma segura.

Espero que te resulte útil.


PD: Cuando el formulario detecte (mediante vbAppWindows o vbAppTaskManager) que la aplicación debe finalizar, es probable que algunos servicios de windows hayan sido detenidos y descargados. Debes controlar aquello que pueda no funcionar como esperas.
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #5 (permalink)  
Antiguo 13-07-2005, 18:01:15
Un Nuevo Amigo
 
Registrado: oct 2003
Posts: 27
mad68 Valoración +2
Predeterminado Gracias por vuestra ayuda

Cita:
Empezado por acalanto
Prueba a utilizar el evento QueryUnload del (Por ejemplo) formulario principal de la aplicación. En este evento puedes poner el código necesario para fnalizar la aplicación de forma segura.

Espero que te resulte útil.


PD: Cuando el formulario detecte (mediante vbAppWindows o vbAppTaskManager) que la aplicación debe finalizar, es probable que algunos servicios de windows hayan sido detenidos y descargados. Debes controlar aquello que pueda no funcionar como esperas.
Efectivamente ese es el evento con el que estoy esperimentando, el problema que tiene como tu bien dices consiste en controlar que los servicios que necesito no hayan sido descargados ya, para ello tengo un gancho "Hook" al gestor de servicios para conocer el estado, pero aun asi no puedo evitar dicha descarga, con lo que hay veces que no puedo realizar las tareas previstas antes de apagar el ordenador.

Finalmente como el tiempo me apremia, he optado por una solucion que yo particularmente considero una chapuza pero que funciona, consiste en poner un gancho "Hook" al menu inicio para detectar cuando la opcion de apagar es seleccionada, si es asi, el programa al detectarlo evita la ejecucion normal y presenta un mensaje al usuario pidiendole que confirme que desea apagar el ordenador, si la respuesta es afirmativa el programa realiza las tareas necesarias y al terminar apaga el ordenador, en caso contrario permite la ejecucion normal de la orden apagar.

Se que es un lio pero de momento es lo unico que tengo, si a alguien se le ocurre algo mejor y mas limpio que no dude en decirmelo.

De nuevo muchas gracias a todos, y si alguien necesita el codigo que he mencionado en cuanto lo termine se lo envio.

Salu2
Responder Con Cita
  #6 (permalink)  
Antiguo 13-07-2005, 18:12:03
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.271
acalanto ha deshabilitado la reputación
Predeterminado

No creo que existan muchas alternativas más. Si la subclasificación no se lleva demasiado bien con VB, imagina tratar de detener el SO...

No obstante y aunque lo que haces te puede parecer una chapuza, en mi opinión creo que no lo es y si te parece oportuno publicarlo en el foro, !! adelante !!; Proyectos así no se ven cada día.


De hecho Windows funciona y controla todo a través de mensajes.
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
¿Windows Vista invalida tu clave de Windows XP? Korku Sistemas Operativos 0 02-02-2007 18:07:26
Empaquetado desde windows Xp para windows 98 SoledadDemicheri Visual Basic 6.00 10 28-11-2006 21:46:12
Detectar Pulsaciones del Teclado a Nivel Windows spider_Ramon Visual Basic.NET 2003 & 2005 3 18-03-2005 16:45:26
Como programar el Servidor para apagado automatico Claudia Visual Basic 6.00 2 08-03-2005 23:26:57
BLOQUEAR TECLA WINDOWS ( LA BANDERITA DE WINDOWS) bezael1 Visual Basic 6.00 0 20-10-2004 21:48:37


La franja horaria es GMT. Ahora son las 04:00:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right