我正在使用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都不匹配。有没有可能使Electron display与Win API display相匹配?
发布于 2019-04-28 06:02:45
正如您已经指出的,id来自electron's screen object。它在内部使用Chromium的屏幕(参见#include "ui/display/screen.h"。在深入研究之后,我发现id来自display_info.cc实现的第59行的方法。它只是根据来自操作系统的设备名称生成的散列,即从MonitorInfoEXA结构生成的散列。
也许你可以重复他们对名字所做的哈希操作,并将其与id匹配。
static_cast<int64_t>(base::Hash(base::WideToUTF8(device_name))其中,设备名称是来自this struct的szDevice。
https://stackoverflow.com/questions/55542435
复制相似问题