C++ 切换到Edge时Windows控制台应用程序停止打印

C++ 切换到Edge时Windows控制台应用程序停止打印,c++,winapi,unicode,wchar-t,C++,Winapi,Unicode,Wchar T,我必须编写一个控制台应用程序来记录活动窗口PID、文本长度和文本 它可以工作,除非我切换到Edge。执行不会停止,但只有PID和文本长度会打印到屏幕上 请帮帮我,我不知道还能尝试什么 #包括 #包括 #包括 int main() { //对字符类型使用环境的默认区域设置 setlocale(LC_CTYPE,“”); std::cout如果你是从未来阅读这篇文章,以下是我发现的: TL;DR:Unicode字符8203在控制台代码页中不可表示,这导致std::wcout失败。解决方案是检查st

我必须编写一个控制台应用程序来记录活动窗口PID、文本长度和文本

它可以工作,除非我切换到Edge。执行不会停止,但只有PID和文本长度会打印到屏幕上

请帮帮我,我不知道还能尝试什么

#包括
#包括
#包括
int main()
{
//对字符类型使用环境的默认区域设置
setlocale(LC_CTYPE,“”);

std::cout如果你是从未来阅读这篇文章,以下是我发现的:

TL;DR:Unicode字符8203在控制台代码页中不可表示,这导致
std::wcout
失败。解决方案是检查
std::wcout.fail()
,如果
true
调用
std::wcout.clear()

下面是我是如何找到真相的

我开始怀疑它与
std::wcout
有关,因为即使我切换到Microsoft Edge(并切换其中的选项卡),以下代码仍会继续打印:

#包括
#包括
#包括
int main()
{
//对字符类型使用环境的默认区域设置
setlocale(LC_CTYPE,“”);
而(1)
{
//获取前景窗口
HWND HWND=getforegroundindow();
如果(!hwnd)继续;
//获取窗口进程ID
DWORD pid=0;
GetWindowThreadProcessId(hwnd和pid);

std::您是否正在泄漏内存,但这需要很长时间才能耗尽进程可用的所有内存。窗口不必有窗口文本。提供的代码无法生成提供的输出。请显示与输出匹配的真实代码。