2016-02-24 5 views
3

Мне интересно, можно ли наложить приложение, сделанное в электронном режиме над игрой. по сути, похоже на то, как паровые накладки в играх.Overlay Electron

Я хочу этого, потому что мы создали веб-приложение таймера, которое выполняет задачи времени, и обсуждает их с возможностью наложения, если это возможно. во время определенных событий в играх, которые повторяются

Я понятия не имею, можно ли это достичь, но это что-то высоко в нашем списке. Любой пример того, как это может быть достигнуто, или кто-либо сделал это раньше.

Спасибо,

Киран

+0

Сравнение с парами не в правильном направлении, если вы не хотите связываться с DirectX или OpenGL. Электронные спецификации и документы разрежены по этой теме, что предполагает, что это не поддерживается nativley и должно быть расширение для Electron .. – Pogrindis

+0

Steams связывается непосредственно с движком рендеринга, вы действительно не можете легко это сделать с электроном. Можно сделать электронное окно прозрачным, см. Этот вопрос для обсуждения: https: // github.com/atom/electron/issues/381, поэтому ваш лучший выбор, вероятно, будет делать это и заблокировать позицию окна в окне игры. –

ответ

6

Чтобы сделать накладку в игре, вам нужно подключить Direct3D или OpenGL api, в соответствии с которым используется игра.

И до настоящего вызова (в D3D) вы можете нарисовать свои собственные вещи на поверхности swapchain.

Чтобы управлять окном оверлей в игре, вам нужно использовать крючок сообщения Windows и некоторые другие вещи.

И вы должны тщательно управлять всеми окнами вашей программы, которые рисуют в игре.

Существует проект крюка Direct3DHook, он написан на C#, но его легко будет писать на C++.

Если вы хотите написать хороший оверлейный двигатель, будет много деталей для рассмотрения.

Overwolf - платформа для наложения приложений, я пишу проект наложения на работу, который занял около двух месяцев, чтобы быть чем-то приблизительным.

Поскольку вы используете Electron, вам необходимо исправить источник, чтобы получить буфер изображения в окне, который будет использоваться в общей памяти для игрового оверлея.

-3

Я понятия не имею, что «Электрон» или «Круто веб-таймер» будет, но я могу предположить, как пар достигает их наложения.

Steam «хозяев» каждой игры. Сначала вы запускаете пар и запускаете игру из Steam или нажимаете на ссылку, созданную Steam, которая запускает Steam, а затем запускает игру. Из-за этого Steam может управлять средой, в которой запускается игра, и, в частности, добавлять крючки к обработке клавиатуры. (Более подробно, посмотрите все сообщения клавиатуры, отправленные в игру.) Когда нажата конкретная комбинация клавиш, они передают управление в свой код, который накладывает элементы управления Steam.

Я считаю, что для получения того же результата вам придется делать то же самое. Возможно, вам не придется размещать игры, чтобы найти крючки (другие программы могут это сделать, рыться в памяти), но это значительно упрощает.

Это очень трудно выполнить этот вид связи между приложениями без использования сборки или C, чтобы получить доступ к Microsoft (или не-docummented) API-интерфейсы

+3

Не зная, что «Electron» оставляет ваш ответ на желании (веб-приложения на основе технологий), однако я не думаю, что кто-то, кроме OP, знает, что такое 'lol web timer'! – Pogrindis

+0

@ Pogrindis на самом деле я посмотрел ссылку, чтобы увидеть, что такое Electron, и я думаю, что мой ответ ясно показывает проблемы. Возможно, я сделаю одно редактирование, чтобы это было ясно. – Hogan

+0

http://electron.atom.io/ – Kieranmv95