0

我正在记忆从日本游戏中读取字符串,我试图在控制台窗口中显示它并将字符串复制到剪贴板。到目前为止,我已经设法在控制台中显示它,但是每当我尝试将它复制到我的剪贴板时,字符串就会被扭曲。我试图搜索这个问题,但大多数人都在努力在控制台中显示字符串,我对此没有任何问题。

char StrTxt[500];
// TextAddress: The memory address of the string
ReadProcessMemory(hProcess, (LPCVOID)(TextAddress), &StrTxt, sizeof(StrTxt) / sizeof(*StrTxt), 0);
toClipboard(StrTxt);
cout << StrTxt << endl;

日文文本在cout之后正确显示在控制台中,但是正在存储的剪贴板值看起来像:y•zuƒXƒ~。我不知道为什么当我将它输出到控制台时它工作正常,因为从内存中读取的字符串也像它出现在剪贴板中一样被扭曲了。这是剪贴板功能,如果它会有所帮助:

void toClipboard(const string &s) {
OpenClipboard(0);
EmptyClipboard();
HGLOBAL hg = GlobalAlloc(GMEM_MOVEABLE, s.size());
if (!hg) {
    CloseClipboard();
    return;
}
memcpy(GlobalLock(hg), s.c_str(), s.size());
GlobalUnlock(hg);
SetClipboardData(CF_TEXT, hg);
CloseClipboard();
GlobalFree(hg);
}

我也尝试过使用wchar_twstring处理字符串,但我得到的符号与预期的完全不同。

如果重要的话,我的系统区域设置当前设置为日语。

我在这里做错了什么?

4

0 回答 0