Добавьте следующий код в код процесса отображения вашего окна . Обратите внимание, что вам, возможно, придется адаптировать первые две строки, в зависимости от того, какие элементы API уже определены ...
const { remote, webFrame } = require ('electron');
const { getCurrentWebContents, Menu, MenuItem } = remote;
//
let rightClickPosition;
//
const contextMenu = new Menu ();
const menuItem = new MenuItem
(
{
label: 'Inspect Element',
click: () =>
{
let factor = webFrame.getZoomFactor ();
let x = Math.round (rightClickPosition.x * factor);
let y = Math.round (rightClickPosition.y * factor);
getCurrentWebContents ().inspectElement (x, y);
}
}
);
contextMenu.append (menuItem);
//
window.addEventListener
(
'contextmenu',
(event) =>
{
event.preventDefault ();
rightClickPosition = { x: event.x, y: event.y };
contextMenu.popup ();
},
false
);
Ссылки:
Что касается того, как открыть devTools с помощью ярлыка, это произойдет автоматически, если строка меню содержит подменю с меню предмет, у которого role
есть toggledevtools
. Например, в вашем коде основного процесса добавление этого в шаблон меню обеспечит пункт меню Toggle Developer Tools
со стандартным сочетанием клавиш:
{
label: "Developer",
submenu:
[
{ role: 'reload' },
{ role: 'toggledevtools' }
]
}
Ссылка: Пункт меню Роли
ОБНОВЛЕНИЕ :
Похоже, существует более мощный и гибкий способ обработки контекстного меню на уровне webContents
путем прослушивания 'context-menu'
событие, задокументированное начиная с Электрон 1.0.2.
Одна важная особенность заключается в том, что коэффициент масштабирования больше не нужно принимать во внимание, координаты x
и y
, возвращаемые в params
, просто всегда верны.
Ссылка: Событие webContents: 'context-menu'
Вот несколько альтернативных кодов процесса визуализации с использованием этого метода:
const { getCurrentWebContents, Menu, MenuItem } = require ('electron').remote;
//
let webContents = getCurrentWebContents ();
//
let rightClickPosition;
//
const contextMenu = new Menu ();
const menuItem = new MenuItem
(
{
label: 'Inspect Element',
click: () =>
{
webContents.inspectElement (rightClickPosition.x, rightClickPosition.y);
}
}
);
contextMenu.append (menuItem);
//
webContents.on
(
'context-menu',
(event, params) =>
{
rightClickPosition = { x: params.x, y: params.y };
contextMenu.popup ();
}
);
Я думаю, Migol хочет знать, насколько большим должен быть диапазон распределения динамических портов RPC .
В базе знаний упоминается минимум 100 портов
Кроме того, предыдущий опыт показывает что минимум 100 портов должно быть открылся, потому что несколько систем службы полагаются на эти порты RPC для общаться друг с другом.
Поэтому я бы разработал приложение для тестирования производительности, чтобы протестировать различные значения вашего динамического диапазона.
Когда мы должны были сделать, этот вид отладки этой статьи был особенно полезен: Как диагностировать проблемы брандмауэра MS DTC. Это включает приложение под названием DTCPing, который помогает Вам быстро отладить, какова проблема.
Насколько я помню, что следующие порты использовались:
Порт TCP 1433 (Порт по умолчанию, используемый SQL Server)
Порт UDP 1434 (Используемый SQL Server)
Порт TCP 3372 (Используемый MSDTC.EXE)