gpt4 book ai didi

c++ - 如何将控制台输出数据输入命令提示符?

转载 作者:行者123 更新时间:2023-11-28 07:22:06 24 4
gpt4 key购买 nike

我有一个基于 Windows 的应用程序。我让它适用于 GUI 模式Console 模式。在 GUI 模式Console 模式 中,我通过使用 AttachConsole() 附加一个 Console 来显示输出打印语句到控制台。现在的挑战是,当我在 console modeCommand prompt 中使用它时,我不需要出现新的控制台。假设在命令提示符下,我将其运行为

d:\Project path > MyApp.exe 控制台模式 **Enter**

然后,由于 Attachconsole(),它会调出另一个控制台。现在,当我禁用 AttachConsole() 时,它不会调出新控制台,也不会在命令提示符中显示输出。但我的要求是在 commandprompt 中显示输出,而不是在从 comamnd 提示符执行时调出新的控制台。

Myapp.cpp
Winmain()
{
....
...
AttachConsole();
cout << "Console Attached \n";
// Some more output
}

所以,当我从命令提示符运行 myapp.exed:\Project path > MyApp.exe 控制台模式 **Enter**它附加了一个 new console 并在新的控制台窗口中打印输出。现在我的要求是我需要禁用 AttachConsole(); 并希望在命令提示符中查看输出。

Myapp.cpp
Winmain()
{
....
...
//AttachConsole(); //Now I an disabling console
cout << "Console Attached \n";
// Some more output
}

如果您查看上面的代码,我已经禁用了 AttachConsole()。现在想当我做,

d:\Project path > MyApp.exe consolemode **Enter**输出将出现在命令提示符中。如下图

d:\Project path > MyApp.exe consolemode **Enter**
Console Attached
....
...
d:\Project path >

请帮帮我

最佳答案

您应该获取当前运行窗口的句柄并处理它,这样您就不需要 allocconsole。此外,您还必须找到光标所在的位置,并指定您的输出应该写在那里。

HANDLE hStdout;
CONSOLE_SCREEN_BUFFER_INFO csbi;

void cp( HANDLE hConsole,wchar_t* output )
{


DWORD cCharsWritten;
COORD crCurr;
GetConsoleScreenBufferInfo(hStdout, &csbi);
crCurr = csbi.dwCursorPosition;

std::wstring ss;
ss=output;

if( !WriteConsoleOutputCharacter( hConsole,
ss.c_str(),
(DWORD)ss.length(),
crCurr,
&cCharsWritten ))
{
return;
}

}

int main( void )
{

hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hStdout, &csbi);

function(hStdout,L"string");
return 0;
}

关于c++ - 如何将控制台输出数据输入命令提示符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19265800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com