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