GetWindowText 无法处理商标符号

GetWindowText Can't Handle TradeMark Symbol

本文关键字:符号 处理 GetWindowText      更新时间:2023-10-16
HWND ForeWindow = GetForegroundWindow();
wchar_t WindowTxt[1024] = { L'' };
GetWindowTextW(ForeWindow, WindowTxt, 1024);
wprintf(L"%sn", WindowTxt);
std::wstring Str(WindowTxt);
std::wcout << L"Wnd: " << Str << L"n";

使用上面的代码获取Skype的窗口,即"Skype™",我得到输出:

"Skype?">

(WCOUT 行无法执行(

1( 为什么 GetWindowText 的宽字符版本无法处理此字符

2( 为什么 std::wstring 解析wchar_t数组后再打印到控制台

CMD控制台不能很好地处理Unicode。 将输出发送到一个文件并在编辑器中打开它,我怀疑你会得到你期望的实际字符。