我正在使用https://electronjs.org/docs/api/screen#screengetalldisplays方法来获取有关监视器的信息。然后,此信息将转到C ++应用程序,在此它尝试通过ID
来匹配监视器。问题在于,Electron提供了ID
方法调用结果无法匹配的EnumDisplayDevicesA
。
Electron Display ID: 2528732444
C++ EnumDisplayDevicesA values:
DeviceID: "PCI\\VEN_10DE&DEV_1B81&SUBSYS_33011462&REV_A1"
DeviceKey: "\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Video\\{48210CD6-1F3B-11E9-9541-D05099833422}\\0000"
因此,电子ID与EnumDisplayDevicesA
可用的任何ID不匹配。将电子显示器与Win API显示器匹配的任何可行方法?
答案 0 :(得分:0)
您已经指出,该ID来自display_info.cc。它在内部使用Chromium的屏幕(请参阅#include "ui/display/screen.h"
。在进一步挖掘之后,我发现id来自this struct实现的第59行的方法。它只是从设备名称生成的哈希值来自操作系统,即MonitorInfoEXA结构。
也许您可以重复对名称进行哈希处理,然后将其与ID匹配。
static_cast<int64_t>(base::Hash(base::WideToUTF8(device_name))
其中设备名称为here中的szDevice。