Отображение данных из ReadProcessMemory (c ++) в оверлей NodeJS / Electron - PullRequest
1 голос
/ 05 апреля 2019

Я хочу использовать c ++ ReadProcessMemory для получения данных x, y, z и отображения их с использованием электронов.

Я пытался использовать / понимать node-addon-api, node-gyp

У меня есть прозрачное электронное окно и ReadProcessMemory, работающие как их отдельные программы, но я не могу понять, как преодолеть разрыв.

Электрон / NodeJS

// Modules to control application life and create native browser window
const {app, BrowserWindow} = require('electron')

// Global reference of the window object
let mainWindow

function createWindow () {
  // Create the browser window.
  mainWindow = new BrowserWindow({
    alwaysOnTop: true,
    x: sWidth - winWidth,
    y: 50,
    width: winWidth,
    height: winHeight,
    webPreferences: {
      nodeIntegration: true
   },
   transparent: true,
   frame: false,
  })

  // and load the index.html of the app.
  mainWindow.loadFile('index.html')

  // Open the DevTools.
  // mainWindow.webContents.openDevTools()

  // Emitted when the window is closed.
  mainWindow.on('closed', function () {
    mainWindow = null
  })
}

// This method will be called when Electron has finished
app.on('ready', createWindow)

// Quit when all windows are closed.
app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') app.quit()
})

app.on('activate', function () {
  if (mainWindow === null) createWindow()
})

c ++

============================ ReadProcessMemory.cpp ========================

#include<iostream>
#include<Windows.h>

using namespace std;

int main() {

    // Read Value
    int readTest = 0;

    HWND hwnd = FindWindowA(NULL, "BioShock");

    if (hwnd == NULL) {
        cout << "Cannot find window." << endl;
        Sleep(3000);
        exit(-1);
    }
    else {
        DWORD procID;
        GetWindowThreadProcessId(hwnd, &procID);
        HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procID);

        if (procID == NULL) {
            cout << "Cannot obtain process." << endl;
            Sleep(3000);
            exit(-1);
        }
        else {
            // Read
            ReadProcessMemory(handle, (PBYTE*)0x44CE137C, &readTest, sizeof(readTest), 0);

            cout << readTest << endl;

            Sleep(10000);
            exit(-1);
        }
    }
    return 0;
}

=============================== napi_test.cc =============================

#include <napi.h>

using namespace std;

Napi::String Method(const Napi::CallbackInfo& info) {
  Napi::Env env = info.Env();
  return Napi::String::New(env, "world");
}

Napi::Object Init(Napi::Env env, Napi::Object exports) {
  exports.Set(Napi::String::New(env, "hello"),
              Napi::Function::New(env, Method));
  return exports;
}

NODE_API_MODULE(hello, Init)

Я ожидаю передачи данных, считываемых из кода c ++, в Electron для отображения.Я не смог заставить их работать вместе.

Спасибо за любую помощь.Я также провел всего несколько часов с C ++.

...