当前位置: 首页 > 编程语言 > C#

C#.NET:如何检查我们是否使用电池运行?Share

时间:2023-04-10 18:22:17 C#

C#.NET:如何检查我们是否使用电池运行?如果我们通过远程桌面运行或使用电池运行,我想成为一名优秀的开发者公民,纳税并禁用某些东西。如果我们在远程桌面(或等效的终端服务器会话)上运行,我们必须禁用动画和双缓冲。您可以通过以下方式检查://////指示我们是否在远程桌面会话中运行。///如果是,那么您必须禁用动画和双缓冲,即纳税!////////publicstaticBooleanIsRemoteSession{//这只是内置方法的友好包装器get{returnSystem.Windows.Forms.SystemInformation.TerminalServerSession;}}现在我需要查明用户是否使用电池供电。如果是,我不想烧毁他们的电池。我想做类似的事情是否有一种管理方式来查看机器当前是否正在使用电池运行?参考资料您如何说服开发人员支付“税款”?职责:远程桌面连接和绘画GetSystemMetrics(SM_REMOTESESSION)我相信你可以检查SystemInformation.PowerStatus看它是否正在使用电池。BooleanisRunningOnBattery=(System.Windows.Forms.SystemInformation.PowerStatus.PowerLineStatus==PowerLineStatus.Offline);编辑:除上述之外,还有一个System.Windows.Forms。电源状态类。其中一种方法是PowerLineStatus,如果使用交流电源,它将等于PowerLineStatus.Online。R.Bemrose发现了托管呼叫。下面是一些示例代码://////指示我们是否使用电池供电。///如果是,则禁用CPU浪费的东西,如动画、后台操作、网络、I/O等///publicstaticBooleanIsRunningOnBattery{get{PowerLineStatuspls=System.Windows.Forms.SystemInformation.PowerStatus.PowerLineStatus;//离线意味着在电池返回时运行(pls==PowerLineStatus.Offline);您可以使用P/Invoke使用GetSystemPowerStatus函数。请参阅:http://msdn.microsoft.com/en-gb/library/aa372693.aspx这是一个例子:usingSystem;使用System.Runtime.InteropServices;命名空间PowerStateExample{[StructLayout(LayoutKind.Sequential)]publicclassPowerState{publicACLineStatusACLineStatus;公共BatteryFlagBatteryFlag;公共字节电池寿命百分比;公共字节保留1;公共Int32电池寿命;公共Int32BatteryFullLifeTime;//不打算直接实例化,使用GetPowerState。privatePowerState(){}publicstaticPowerStateGetPowerState(){PowerStatestate=newPowerState();如果(GetSystemPowerStatusRef(state))返回状态;thrownewApplicationException("无法获取电源状态");}[DllImport("Kernel32",EntryPoint="GetSystemPowerStatus")]privatestaticexternboolGetSystemPowerStatusRef(PowerStatesps);}//注意:与Win32标头匹配的底层字节类型publicenumACLineStatus:byte{Offline=0,Online=1,Unknown=255}publicenumBatteryFlag:byte{High=1,Low=2,Critical=4,Charging=8,NoSystemBattery=128,Unknown=255}//带有主要入口点的程序类以显示示例。类程序{staticvoidMain(string[]args){PowerStatestate=PowerState.GetPowerState();Console.WriteLine("交流线路:{0}",state.ACLineStatus);Console.WriteLine("电池:{0}",state.BatteryFlag);Console.WriteLine("电池续航%:{0}",state.BatteryLifePercent);您可以使用WMI(WindowsManagementInstrumentation)查询操作系统的电池状态您可以在此处找到更多信息:希望有帮助。Powerlord的回答似乎不起作用,可能是因为它在2008年得到了回答。这是一个对我有用的版本:Booleanx=(System.Windows.SystemParameters.PowerLineStatus==System.Windows.PowerLineStatus.Offline);我不相信它在托管代码中公开,但您可以通过调用此信息使用Win32GetSystemPowerStatus获取它。此外,您可能需要考虑使用GetCurrentPowerPolicies或类似工具来确定与性能/电源管理相关的用户首选项。以上是C#学习教程:C#.NET:Howtocheckifwearerunningonbattery?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: