![](/img/trans.png)
[英]How to read output from cmd.exe using CreateProcess() and CreatePipe()
[英]How to display cmd prompt after printing output to cmd.exe?
我有一个从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:New folder>
。
如果问题尚未得到解答(经过这么长时间),则需要通过发送(或者,最好是发布)相应的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 );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.