Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-07-2004
tiel tiel is offline
Miembro
 
Registrado: jul 2003
Ubicación: México, D.F.
Posts: 29
Poder: 0
tiel Va por buen camino
Question Controlar Monitor

Hasta Windows ME pude controlar el monitor (apagar y encender), pero cuando migré a XP ya no pude, leí la Microsoft SDK y no encontré nada, sólo decía que SC_MONITORPOWER es sólo para Windows 95.

Pero supongo que de alguna manera la API sigue controlando el monitor, así que si alguien me pudiera decir cómo, se lo agradecería mucho.

De antemano gracias.
__________________
“Daría todo lo que sé por la mitad de lo que ignoro”
Responder Con Cita
  #2  
Antiguo 21-07-2004
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
Buenas,

En XP no anda estas líneas?:
Código Delphi [-]
SendMessage(Application.Handle, wm_SysCommand, SC_MonitorPower, 1);
...
SendMessage(Application.Handle, wm_SysCommand, SC_MonitorPower, -1);

Que yo sepa la API (Esta u otra) si sigue controlando el monitor, pero nunca probé nada sobre XP.

Saludos!
__________________
Suerte
.: Gydba :.
Responder Con Cita
  #3  
Antiguo 22-07-2004
tiel tiel is offline
Miembro
 
Registrado: jul 2003
Ubicación: México, D.F.
Posts: 29
Poder: 0
tiel Va por buen camino
Nop

Esas líneas son las que uso (usaba) y con XP no sirven.

¿Alguien sabe cómo?
__________________
“Daría todo lo que sé por la mitad de lo que ignoro”
Responder Con Cita
  #4  
Antiguo 31-07-2004
tiel tiel is offline
Miembro
 
Registrado: jul 2003
Ubicación: México, D.F.
Posts: 29
Poder: 0
tiel Va por buen camino
Ya pude

Pues nadie me respondió, pero ya investigué, y las nuevas instrucciones son éstas para apagar el monitor en XP:

Para poweroff:

Código:
SendMessage(Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
Para standby:

Código:
SendMessage(Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1);
Para encenderlo:

Código:
SendMessage(.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
Aunque no entiendo la diferencia específica entre standby y poweroff, pero bueno.
__________________
“Daría todo lo que sé por la mitad de lo que ignoro”

Última edición por tiel fecha: 31-07-2004 a las 00:22:25.
Responder Con Cita
  #5  
Antiguo 31-07-2004
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
Perdón que me meta, pero lo que yo te mencioné no estaba del todo errado.

Lamentablemente no puede comprobar su funcionamiento porque no tengo una PC con XP, pero no quiere decir que nadie te dio una respuesta.
__________________
Suerte
.: Gydba :.
Responder Con Cita
  #6  
Antiguo 01-08-2004
•–[XII]–• •–[XII]–• is offline
Miembro
 
Registrado: may 2004
Posts: 21
Poder: 0
•–[XII]–• Va por buen camino
StandBy enciende el monitor cuando muves el ratón y lo otro lo apaga.
Responder Con Cita
  #7  
Antiguo 03-08-2004
ramonibk ramonibk is offline
Miembro
 
Registrado: may 2004
Posts: 193
Poder: 21
ramonibk Va por buen camino
Bueno yo estoy usando win 2k.
y he probado los comandos puestos por Tiel.
la conclusion es que tanto el de PowerOff como el de Standby.
me ponen el monitor en Standby, y a cualquier movimiento de raton lo activa de nuevo.
alguin sabria como ponerlo para Win 2K
Responder Con Cita
  #8  
Antiguo 21-11-2008
emeceuy emeceuy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Uruguay
Posts: 122
Poder: 22
emeceuy Va por buen camino
hola ! a mi me pasa lo mismo, esas dos funciones ponen al monitor en stand by, pero el problema es que al mover el mouse o tocar el teclado se enciende y eso es lo que justamente no quiero... alguien sabe como puedo evitarlo? de manera que la aplicacion apague y encienda el monitor segun lo necesite (pero que el usuario no lo pueda encender)...

inclusive creo que una opcion sería luego de apagar (o stand by) el monitor desactivar el mouse y el teclado, y luego cuando la aplicacion encienda el monitor volver a activar el mouse y teclado... esa sería una opcion "sencilla", pero se puede? (uso WinXP)

muchas gracias como siempre !
__________________
Marcelo C.

Última edición por emeceuy fecha: 21-11-2008 a las 14:57:54.
Responder Con Cita
  #9  
Antiguo 26-11-2008
emeceuy emeceuy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Uruguay
Posts: 122
Poder: 22
emeceuy Va por buen camino
hola ! no hay forma de hacer esto?
__________________
Marcelo C.
Responder Con Cita
  #10  
Antiguo 26-11-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 21
cHackAll Va por buen camino
Cita:
Empezado por emeceuy Ver Mensaje
hola ! no hay forma de hacer esto?
no como uno quisiera;

Código Delphi [-]
 repeat Sleep(1000);
  SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 1);
 until OnMonitor;
 
// ...
 
 SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1);

ó

Código Delphi [-]
 SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 1);
 BlockInput(True);
 
// ...
 
 SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #11  
Antiguo 26-11-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Wink

quisiera agregar que si bien puedo programar que el monitor se apague, ya sea utilizando una conbinación de teclas o presionando un boton en específico....

como sabra el usuario que pulsar o boton presionar para prender el monitor despues ???? lo digo por que el monitor estará apagado, y por lo tanto no sabrá donde posicionar el mouse... o que esta presionando....

por lo tanto creo que la opción del Stanby es como la mejor...(es mi opinion)....

Salu2
__________________
BlueSteel
Responder Con Cita
  #12  
Antiguo 26-11-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.202
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por BlueSteel Ver Mensaje
quisiera agregar que si bien puedo programar que el monitor se apague, ya sea utilizando una conbinación de teclas o presionando un boton en específico....

como sabra el usuario que pulsar o boton presionar para prender el monitor despues ???? lo digo por que el monitor estará apagado, y por lo tanto no sabrá donde posicionar el mouse... o que esta presionando....
Pues parece que la solución a eso sería un Hook al teclado para detectar la combinación de teclas que enciendan el monitor, claro que previamente debe conocerla... O bien encender directamente el monitor.

Saludos.
Responder Con Cita
  #13  
Antiguo 27-11-2008
emeceuy emeceuy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Uruguay
Posts: 122
Poder: 22
emeceuy Va por buen camino
Si, en realidad en mi caso eso no es problema. Mi idea es con 2 PCs usar el VNC o programa similar que permita ver en la PC1 la pantalla del PC2, sin que el usuario de la PC2 vea el proceso en esa PC; entonces cuando comienza el proceso se apaga el monitor de la PC2, y el usuario de la PC1 ve la pantalla por medio del VNC y luego al terminar el proceso se enciende nuevamente el monitor
__________________
Marcelo C.
Responder Con Cita
  #14  
Antiguo 27-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
OFFTOPIC: Precisamente el escritorio remoto permite que ambos puedan ver la pantalla, si tú le apagas el monitor es igual que decirle al usuario: "oye, ¿puedes salir de la habitación?, es que voy a tocar en tu ordenador cosas que tú no puedes ver."

Yo aconsejaría transparencia, será mejor para ambas partes.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #15  
Antiguo 27-11-2008
emeceuy emeceuy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Uruguay
Posts: 122
Poder: 22
emeceuy Va por buen camino
Entiendo tu planteo Lepe, y es cierto que es mejor transparencia, pero en este caso el usuario sabe que no tiene acceso a ese proceso y es transparente desde el momento que está todo claro para ambas partes.

Estoy teniendo un problema al utilizar SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 1) y SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1); No se porque, luego de encender el monitor el programa no responde (aun sin usar el blockinput, utilizando solamente el comando del monitor) al volver no responde, que raro ! que puede ser?

Edito: a mi en XP no me funcionan bien las lineas que puse arriba, pero sí me funciona SendMessage(Application.Handle, wm_SysCommand, SC_MonitorPower, 1) (como había planteado tiel al principio)
__________________
Marcelo C.

Última edición por emeceuy fecha: 27-11-2008 a las 15:18:35.
Responder Con Cita
Respuesta



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
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:27:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi