c# - reparar - puerto de carga magsafe 2
¿Cómo detectar cuándo se desconectó el cable de alimentación de la computadora portátil? (7)
Por enésima vez mi laptop se apagó en el medio de mi juego porque mi cable de alimentación se había desconectado sin que yo lo notara.
Ahora quiero escribir un pequeño programa de C # que detecta cuando mi cable de alimentación se desconecta y luego emite un largo y agradable pitido del sistema. ¿Qué API podría usar para eso?
Esto debería ser trivial para implementar utilizando la propiedad SystemInformation.PowerStatus . Y a pesar de que vive en Windows.Forms, debería ser perfectamente utilizable desde un servicio de sistema.
Para obtener una solución que también funciona en el Marco Compacto, vea CÓMO: Obtener el Estado de Alimentación del Dispositivo
Esto probablemente se cerrará como no relacionado con la programación, pero es posible que desee verificar los ajustes de su BIOS.
Mi computadora portátil Lenovo hace exactamente lo que sugiere de forma nativa. Hay una configuración en mi BIOS para pitidos en el cambio de estado de energía.
Esto puede depender mucho de su sistema operativo exacto. Aquí hay algunas llamadas para Windows XP, estoy seguro de que puede encontrar los equivalentes de Vista:
http://msdn.microsoft.com/en-us/library/ms704147(VS.85).aspx
No se me ocurre nada directamente accesible a través del framework .NET, pero sí sé que Intel tiene el Mobile Platform SDK con bibliotecas .NET que deberían proporcionarle esta información. Es posible que AMD tenga un equivalente en alguna parte.
Para continuar con la respuesta de BQ, hay configuraciones de energía en Windows que se pueden cambiar cuando se retira el cable de alimentación. Como a veces trabajo con él, no cambié la configuración de energía en mi máquina, pero cuando la batería se acerca al 15%, el brillo de la pantalla se establece en el nivel más bajo, lo que permite trabajar (y se puede cambiar fácilmente con la tecla Fn-Home ) pero muy notable para que vuelva a enchufar el cable a tiempo.
SystemEvents.PowerModeChanged . Tendrá que utilizar GetSystemPowerStatus (consulte el enlace en una de las respuestas) o SystemInformation.PowerStatus (el enlace está en otra respuesta) en el controlador para verificar qué sucedió.
Aquí hay una pequeña solución: usando la aplicación de formulario de Windows C #
PowerStatus powerStatus = SystemInformation.PowerStatus;
if (powerStatus.PowerLineStatus == PowerLineStatus.Online)
{
MessageBox.Show("Running On Power", Convert.ToString(powerStatus.BatteryLifePercent * 100) + "%");
}
else
{
MessageBox.Show("Running On Battery", Convert.ToString(powerStatus.BatteryLifePercent * 100) + "%");
}
Espero, ya entendiste la idea, ahora puedes usarla de cualquier forma, ...........