Я хочу использовать 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 ++.