<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.2995" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Hola Mario,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>he mirado algo más el tema. Te comento sobre dos 
estados de energía del PC:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>- El sistema pasa a modo de inactividad cuando 
durante el tiempo que tiene programado (botón derecho en el escritorio, 
protector de pantalla y luego botón energía) no se realiza nada en el PC. 
Importante si estás descargando cosas de internet no se produce porque está 
detectando actividad por lo menos en mi PC. Cuando ocurre aparece la típica 
ventanita azul en windows xp con el listado de usuarios, mensajes de cada uno y 
estas cosas.El mensaje WM_POWERBROADCAST te avisa 5 segundos antes de de 
producirse este estado del sistema.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>- Si el sistema hiberna, pues hace como los 
osos...se queda como apagado pero antes guarda todo lo necesario para poder 
devolver el sistema a como se encontraba antes de hibernar con sólo mover el 
ratón o pulsar una tecla.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Te recuerdo la primera línea de la 
función callback:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT 
message, WPARAM wParam, LPARAM lParam)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>El mensaje anterior que se produce tanto antes de 
cuando el sistema hiberna como inactiva se captura igual que cualquier otro 
mensaje:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2> switch 
(message)                  
/* handle the messages */<BR>    
{<BR>         case 
WM_COMMAND:</FONT></DIV>
<DIV><FONT face=Arial size=2>        
    
switch(LOWORD(wParam))<BR>             
{<BR>                ....</FONT></DIV>
<DIV><FONT face=Arial 
size=2>                break;<BR>             
}<BR>             
break;<BR>         case 
WM_POWERBROADCAST:    // Mensaje que nos 
interesa<BR>             
switch(LOWORD(wParam))    //No tengo claro si LWORD es necesario. 
Funciona colocánolo y 
quitándolo.<BR>             
{<BR>                
case 
PBT_APMSUSPEND:<BR>                     
MessageBox(hwnd,"","",MB_OK);    // Tal y como está 
esto poco antes de hibernar y pasar a inactividad aparece el 
mensajito.<BR>                     
break;<BR>             
}<BR>             
break;</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Dentro del mensaje WM_POWERBROADCAST se pueden dar 
otros muchos que puedes identificar dentro del switch:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV>
<TABLE>
  <TBODY>
  <TR>
    <TD width="40%"><A 
      href="ms-help://MS.PSDKSVR2003SP1.1033/power/base/pbt_apmbatterylow.htm"><B>PBT_APMBATTERYLOW</B></A></TD>
    <TD width="60%">Battery power is low.</TD></TR>
  <TR>
    <TD width="40%"><A 
      href="ms-help://MS.PSDKSVR2003SP1.1033/power/base/pbt_apmoemevent.htm"><B>PBT_APMOEMEVENT</B></A></TD>
    <TD width="60%">OEM-defined event occurred.</TD></TR>
  <TR>
    <TD width="40%"><A 
      href="ms-help://MS.PSDKSVR2003SP1.1033/power/base/pbt_apmpowerstatuschange.htm"><B>PBT_APMPOWERSTATUSCHANGE</B></A></TD>
    <TD width="60%">Power status has changed.</TD></TR>
  <TR>
    <TD width="40%"><A 
      href="ms-help://MS.PSDKSVR2003SP1.1033/power/base/pbt_apmquerysuspend.htm"><B>PBT_APMQUERYSUSPEND</B></A></TD>
    <TD width="60%">Request for permission to suspend.</TD></TR>
  <TR>
    <TD width="40%"><A 
      href="ms-help://MS.PSDKSVR2003SP1.1033/power/base/pbt_apmquerysuspendfailed.htm"><B>PBT_APMQUERYSUSPENDFAILED</B></A></TD>
    <TD width="60%">Suspension request denied.</TD></TR>
  <TR>
    <TD width="40%"><A 
      href="ms-help://MS.PSDKSVR2003SP1.1033/power/base/pbt_apmresumeautomatic.htm"><B>PBT_APMRESUMEAUTOMATIC</B></A></TD>
    <TD width="60%">Operation resuming automatically after event.</TD></TR>
  <TR>
    <TD width="40%"><A 
      href="ms-help://MS.PSDKSVR2003SP1.1033/power/base/pbt_apmresumecriticalhtm"><B>PBT_APMRESUMECRITICAL</B></A></TD>
    <TD width="60%">Operation resuming after critical suspension.</TD></TR>
  <TR>
    <TD width="40%"><A 
      href="ms-help://MS.PSDKSVR2003SP1.1033/power/base/pbt_apmresumesuspend.htm"><B>PBT_APMRESUMESUSPEND</B></A></TD>
    <TD width="60%">Operation resuming after suspension.</TD></TR>
  <TR>
    <TD width="40%"><A 
      href="ms-help://MS.PSDKSVR2003SP1.1033/power/base/pbt_apmsuspend.htm"><B>PBT_APMSUSPEND</B></A></TD>
    <TD width="60%">
      <DIV>System is suspending operation.</DIV></TD></TR></TBODY></TABLE></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>También se me ocurre que puedes colocar un 
MessageBox entre el mensaje y el switch para identificar otra situación que te 
interese, lo mismo por ejemplo cuando se apaga el monitor o se activa el 
protector de pantalla también se produce este mensaje y te interesa más 
así.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>case WM_POWERBROADCAST:    // 
Mensaje que nos interesa</FONT></DIV>
<DIV><FONT face=Arial size=2>    MessaBox(hwnd,"Entrada al 
mensaje 
WM_POWERBR...","Pruebas",MB_OK);<BR>             
switch(LOWORD(wParam))    //</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Un saludo,</FONT></DIV>
<DIV><FONT face=Arial size=2>Juan Antonio.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<BLOCKQUOTE 
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV 
  style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
  <A title=kenpuudenkiberserk@gmail.com 
  href="mailto:kenpuudenkiberserk@gmail.com">Mario Contreras</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A 
  title=cconclase@listas.conclase.net 
  href="mailto:cconclase@listas.conclase.net">Lista de correo sobre C y C++</A> 
  </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Thursday, December 14, 2006 12:36 
  PM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [C con Clase] Inactividad 
  del sistema</DIV>
  <DIV><BR></DIV>Gracias Juan, creo que me servirá, aunque no me queda muy claro 
  cómo hacer que mi programa interprete el mensaje...:S<BR><BR>Intentaré probar 
  a ver qué sale. Gracias y saludos.<BR>
  <P>
  <HR>

  <P></P>_______________________________________________<BR>Cconclase mailing 
  list<BR><A 
  href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</A><BR><A 
  href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</A><BR></BLOCKQUOTE></BODY></HTML>