Наше приложение C ++ отправляет сообщение WM_COPYDATA:
typedef struct tagNotificationStruct {
char msg[255];
} NotificationStruct;
void __stdcall LogMessageWrite()
{
const char* pszMessage = "Test 1 2 3";
NotificationStruct notification;
strcpy(notification.msg, pszMessage);
COPYDATASTRUCT copyDataStruct;
copyDataStruct.dwData = 73; // random identification number
copyDataStruct.cbData = sizeof(NotificationStruct);
copyDataStruct.lpData = ¬ification;
string text = "my window title";
wchar_t wtext[15];
mbstowcs(wtext, text.c_str(), text.length());
LPWSTR ptr = wtext;
HWND hwDispatch = FindWindow(NULL, ptr);
if (hwDispatch != NULL) {
SendMessage(hwDispatch, WM_COPYDATA, NULL, (LPARAM)(LPVOID)& copyDataStruct);
}
}
В нашем приложении Electron мы слушаем сообщения WM_COPYDATA в JavaScript:
browserWindow.hookWindowMessage(0x4A /* = WM_COPYDATA */, (wParam, lParam) => {
console.log('wParam = ', wParam);
console.log('lParam = ', lParam);
});
Мы получаем сообщение и он выводит на консоль:
wParam = <Buffer@0x0000018C305F7160 00 00 00 00 00 00 00 00>
lParam = <Buffer@0x0000018C305F6EC0 a0 f2 cf 42 8a 00 00 00>
Как мы можем интерпретировать это в JavaScript, чтобы мы могли прочитать строку, отправленную из программы C ++?