' Y'不被视为内部或外部命令

时间:2015-09-03 06:48:30

标签: c++ windows qt cmd

我有关于命令提示符的问题。我在Windows 7上有一个C ++ / Qt GUI桌面应用程序。但我还需要从命令提示符运行此应用程序 例如:

myApp.exe -l myfile -ic

我可以从命令提示符下成功启动和使用我的应用程序功能,但如果我需要在命令提示符下从用户那里获取输入,我就无法接受输入。当我输入输入时,输出是

  Accept values? y(yes)n(no)
  y
 'y' is not recognized as an internal or external command,
  operable program or batch file.

我正在接受这样的用户输入:

char userResponse = 'n';
std::cin >> userResponse;
if (userResponse == 'y' || userResponse == 'Y' )
{               
    ...             
}

emit myWorkDone();
return false;

问题是程序在等待用户输入行等待。当发出myWorkDone信号时,应用程序退出正常情况。

主要

 QApplication a(argc,argv);
...
> QObject::connect(&argProcessor, SIGNAL(finishedProcessor()) ,&a,    
> SLOT(quit()),Qt::QueuedConnection);
>     
>       return a.exec(); // Main application

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。问题是当在Visual Studio中的项目属性中关闭控制台时,Project - >属性 - >链接器 - >系统 - >子系统。

打开Windows控制台以关闭应用程序的控制台后,QApplication不会从Windows控制台获取输入。

enter image description here

我将其更改为控制台。

enter image description here

之后,QApplication可以从Windows控制台获取输入。但我不想向用户显示我的应用程序的控制台。所以我使用以下代码将其隐藏在代码中:

        HWND hwnd = GetConsoleWindow();
        ShowWindow(hwnd, 0);

因此,应用程序可以正确地从用户那里获取输入,并且我的控制台是隐藏的。