我有一个从 cmd.exe
执行并向其打印输出的 winmain
应用程序。我使用 AttachConsole(ATTACH_PARENT_PROCESS)
连接到 cmd.exe。执行应用程序并将输出打印到 cmd.exe 后,不会显示命令行提示符,看起来应用程序仍在运行(虽然它已经关闭)。在关闭我的应用程序之前,我使用 FreeConsole()
释放控制台。
#include <iostream>
#include <fstream>
#include <windows.h>
int wWinMain
(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nCmdShow
)
{
AttachConsole(ATTACH_PARENT_PROCESS);
std::wofstream console_out("CONOUT$");
std::wcout.rdbuf(console_out.rdbuf());
std::wcout << L"\nSome Output" << std::endl;
FreeConsole();
return 0;
}
如何在 myapp.exe
打印其输出并关闭后出现提示 C:Newfolder>
。
最佳答案
如果问题还没有得到解答(经过这么长时间),需要通过发送(或者最好是发布)相应的 WM_KEYDOWN 来模拟控制台窗口中“Enter”键的实际按下消息到控制台窗口,即
之后
std::wcout << L"\nSome Output" << std::endl;
在打电话之前
FreeConsole()
,
插入以下内容:
HWND hWndCon_ = ::GetConsoleWindow();
if( hWndCon_ ) {
::PostMessage( hWndCon_, WM_KEYDOWN, VK_RETURN, 0 );
}
或者简单地
::PostMessage( ::GetConsoleWindow(), WM_KEYDOWN, VK_RETURN, 0 );
关于c++ - 如何在将输出打印到cmd.exe后显示cmd提示符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38974182/