【发布时间】:2014-01-28 16:29:44
【问题描述】:
我正在使用 WriteConsoleOutputCharacter 在控制台上写入一个字符串。我的目标是,如果该字符串是一个命令,那么我可以正常执行它(按回车键)。但是结果是,虽然我有命令显示好吧,它不能被执行。当我点击输入时,cmd只是忽略它并显示一个新行,就好像前一个是空的一样。有没有办法强制 cmd 将其视为命令? 这是我所做的:
HANDLE hStdout;
CONSOLE_SCREEN_BUFFER_INFO csbi;
void dir( HANDLE hConsole )
{
DWORD cCharsWritten;
COORD crCurr;
GetConsoleScreenBufferInfo(hStdout, &csbi);
crCurr = csbi.dwCursorPosition;
std::wstring ss;
ss=std::wstring(L"dir ");
SetConsoleCursorPosition( hConsole, crCurr );
if( !WriteConsoleOutputCharacter( hConsole,
ss.c_str(),
(DWORD)ss.length(),
crCurr,
&cCharsWritten ))
{
return;
}
}
int main( void )
{
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hStdout, &csbi);
dir(hStdout);
return 0;
}
我得到的结果是
C:\Users\..\Desktop>prog.exe
dir
这不好,因为我缺少提示输入新命令的“C:\Users..\Desktop>”部分。 所以我想我会使用 start /B 方法执行我的程序来获取提示。现在的输出确实是
C:\Users\..\Desktop>start /B prog.exe
C:\Users\..\Desktop>dir
但是当我按回车时没有执行dir命令,我只是换了一个新行。
C:\Users\..\Desktop>start /B prog.exe
C:\Users\..\Desktop>dir
C:\Users\..\Desktop>
【问题讨论】: