2015-09-03 81 views
0

我有一个关于命令提示符的问题。我在Windows 7上有一个C++/Qt GUI桌面应用程序。但是我也需要从命令提示符 运行此应用程序,例如:'y'不被识别为内部或外部命令

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 

我怎样才能解决这个问题呢?

+5

为了理解问题,需要查看源代码以了解如何阅读用户的输入以及如何处理它。 – vahancho

+0

我添加了如何从用户输入 – Wilmort

+0

那么,以及您稍后如何处理这个'userResponse'变量?请说明如何处理用户的输入。 – vahancho

回答

0

我找到了解决方案。问题是,当在Visual Studio,Project - > Properties - > Linker - > System - > SubSystem中的项目属性中关闭控制台时。

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

enter image description here

我改变了这控制台。

enter image description here

之后,QApplication的可以输入从Windows控制台。但我不想将我的应用程序的控制台显示给用户。所以我墙根它在代码中使用:

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

因此,应用程序可以正确地采取从用户输入和我的控制台墙根。

相关问题