阅读视图

发现新文章,点击刷新页面。

Windows判断是笔记本还是台式

前言

在开发桌面应用程序时,我们经常需要根据设备类型来调整功能或界面。例如,触摸板管理功能只对笔记本电脑有意义,而对台式机用户来说完全不需要。本文将介绍一种基于系统机箱类型(Chassis Type)的可靠检测方法。

正文

Windows系统通过WMI(Windows Management Instrumentation)提供了丰富的硬件信息查询接口。其中,Win32_SystemEnclosure 类包含了系统机箱的详细信息,包括一个关键属性:ChassisTypes

ChassisTypes 不同的数值代表不同的设备形态:

笔记本电脑相关类型:

  • 8: Portable(便携式)
  • 9: Laptop(笔记本)
  • 10: Notebook(笔记本)
  • 14: Sub Notebook(子笔记本)
  • 30: Tablet(平板电脑)
  • 31: Convertible(可转换)
  • 32: Detachable(可拆卸)

台式机相关类型:

  • 3: Desktop(桌面)
  • 4: Low Profile Desktop(低姿态桌面)
  • 5: Pizza Box(披萨盒式)
  • 6: Mini Tower(迷你塔式)
  • 7: Tower(塔式)
  • 13: All in One(一体机)
  • 15: Space-Saving(节省空间型)
  • 16: Lunch Box(午餐盒式)

详细文档可以看 :learn.microsoft.com/en-us/windo…

Power Shell可以直接运行命令查看

(Get-CimInstance -ClassName Win32_SystemEnclosure).ChassisTypes

image.png

结尾

感兴趣的可以去试试

Electron判断是内置摄像头还是接摄像头

前言

Electron 中使用摄像头时,经常需要区分「内置摄像头」和「外接摄像头」。但是 navigator.mediaDevices.enumerateDevices() 只提供 labeldeviceId 等,不直接标明内置/外接。所以需要原生模块来判断是内置还是外接摄像头

WindowsMac的实现思路不一样。

后面有代码。

正文

Windows

Windows系统中可以使用设备安装日期做判断:内置摄像头多为随系统或整机出厂时安装(安装日期较早),外接摄像头多为用户后来插上(安装日期较晚)。

Windows中会得到类似的数据

image.png

Mac

Mac系统中可以使用系统给出的 deviceType 直接区分内置(BuiltIn)与外置(External)。

比如:AVCaptureDeviceTypeBuiltInWideAngleCamera(内置广角摄像头)和
AVCaptureDeviceTypeExternal(外置设备)

具体可以查看官方的类型文档:developer.apple.com/documentati…

结尾

引入原生模块,然后在Electron中根据不同的平台,使用不同的字段来区分「内置摄像头」和「外接摄像头」。

原生模块的实现源码地址:github.com/lzt-T/camer…

感兴趣的可以去试试

❌