Не удается получить displayName в электронном - PullRequest
0 голосов
/ 05 апреля 2019

Я использую метод 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"

Так что Electron ID не соответствует ни одному из идентификаторов, доступных для EnumDisplayDevicesA.Есть ли какой-нибудь возможный способ сопоставить отображение Electron с отображением Win API?

1 Ответ

0 голосов
/ 28 апреля 2019

Идентификатор исходит от объекта электронного экрана , как вы уже указали. Это внутренне использует экран Chromium (см. #include "ui/display/screen.h". После более подробного изучения я обнаружил, что идентификатор происходит из метода в строке 59 реализации display_info.cc . Это просто хеш, сгенерированный из имя устройства, которое происходит от ОС, а именно из структуры MonitorInfoEXA.

Может быть, вы можете повторить хэш, который они делают с именем, и сопоставить его с идентификатором.

static_cast<int64_t>(base::Hash(base::WideToUTF8(device_name))

где имя устройства - szDevice из this struct .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...