检测应用程序是否在笔记本电脑上运行

Com*_*sNo 7 c++ delphi

可能重复:
如何判断用户是否正在使用笔记本电脑

我试图找出应用程序是在笔记本电脑上还是在桌面上运行,有关如何实现这一点的任何想法?

注意:我只对用Delphi和/或C++编写的API感兴趣.

编辑:我的目标平台是Windows XP +,甚至Windows 7也没关系.

最后编辑:谢谢大家的帮助,我创建了一个带帮助方法的单元(在Delphi中)随意翻译成C++或其他语言和/或帮助扩展(或修复可能的缺陷).该单位可在此处找到http://www.delphigeist.com/2011/02/laptop-specific-functions.html

Naw*_*waz 16

使用此结构:SYSTEM_POWER_STATUS,并检查ACLineStatus字段的值.

  • ACLineStatus = 0 =>系统未使用交流电源>笔记本电脑+电池
  • ACLineStatus = 1 =>系统使用AC电源=>笔记本电脑+ AC
  • ACLineStatus = 255 =>交流电源状态未知=>桌面

免责声明:尝试使用这些.我不是在说他们是否可靠.但他们几乎是正确的.

-

编辑:

使用GetSystemPowerStatus得到上述结构的价值.

顺便说一句,你也可以试验结构的其他领域; 也许您可以找到一些有用的模式,为您提供不同字段值的组合,以帮助您可靠地检测应用程序是否在笔记本电脑上运行.

  • FWIW,上周我将一台新的USB连接UPS插入我的Windows 2008服务器,并自动检测到"电池",现在显示与笔记本电脑相同的所有电池选项.我不认为电池在任何方面都是笔记本电脑的可靠指标. (6认同)

peo*_*oro 9

我不认为有一种标准的方法来检查应用程序是否在笔记本电脑上运行,但我认为还没有需要知道这一点的标准理由.

关键是笔记本电脑与桌面没有太大的不同:笔记本电脑永远不会被移动,我想可以用嵌入式UPS构建一个桌面(看作电池吗?)

我想你应该知道它是否是一台笔记本电脑,使用你需要检查笔记本电脑的功能:

  • 你想知道它是否是一台笔记本电脑,因为你的应用程序需要表现得不同,如果计算机可能会被移动?然后检查是否有电池插入.

  • 你想知道它是否是一台笔记本电脑,以确定是否可以修改硬件?在这种情况下,请检查主板型号或询问对话框.

  • 您是否需要检查它以便知道如果长时间使用太长时间是否会烧死?只需监控温度......

  • @Dorin Duminica:然后检查您的机器性能:检查机器CPU或运行几秒钟的微小嵌入式基准测试.这样,您就可以为具有相同实际性能的全新笔记本电脑和旧桌面提供相同的功能(等等). (5认同)
  • @Dorin Duminica:如果我有一个应用决定减少功能,因为它在笔记本电脑上运行,我真的很生气.现在..你不想惹恼管理层,对吗? (2认同)