Ver Mensaje Individual
  #7  
Antiguo 28-06-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
La información acerca de este mensaje la puedes encontrar en la ayuda de Windows SDK que se incluye con Delphi. Busca por WM_SETTINGCHANGE.

El mensaje puede mandarse por muchas razones. Puede mandarlo el propio sistema cuando se altera algún parámetro usando la función SystemParametersInfo, o bien una aplicación cuando altera algún parámetro de formato como en este caso.

La diferencia (entre si lo manda el sistema o una aplicación) se detecta examinando Message.WParam en el manejador del mensaje; si es distinto de cero, se supone que es porque el mensaje lo mandó el sistema. Sería interesante ver quién lo está mandando; podría ser el propio driver de la impresora aunque suena raro pues dices que sucede con varias impresoras y como te ha mencionado Luis, no es algo que suela suceder.

Una posibilidad que se me ocurre es que el driver de la impresora no esté en el mismo lenguaje que el sistema, y quizá cuando enciendes la impresora, el sistema trata de ajustar reestableciendo los valores y ocasionando el cambio que observas. Habría que ver en tal caso, si puedes reemplazar el driver por uno que coincida con el idioma del sistema.

De todas maneras, creo que no debería preocuparte qué otras razones generan el mensaje WM_SETTINGCHANGE; a fin de cuentas tú requieres un valor determinado para LongDateFormat, sin importar qué lo está alterando, así que bastaría que en el manejador le vuelvas a poner el valor deseado.

// Saludos
Responder Con Cita