如何让我的控制台C++程序在后台工作?
答
此请求最适合Windows服务概念。该example。你可以实现许多不同的方式,C/C++与Qt或不C#。创建服务而不是隐藏控制台的好处在于,该程序可以通过标准的Windows服务接口为(注册/启动/停止/等)进行管理。与管理用户界面和控制台实用程序。
让app消耗更少的CPU更加细腻的东西,取决于您的应用功能,但简单的答案是,不运行密集的循环,使其等到它需要处理的东西。有太多的东西需要覆盖线程等,但我们不知道你的程序做什么。
答
Windows应用程序在后台始终运行,而不必与GUI窗口,所以这是你要求什么。 如果你已经有一个控制台应用程序,你只需要做到以下几点:
- 在Visual Studio中创建一个空的项目(而不是控制台,一个Win32应用程序)。
- 添加新的C++源文件到该项目
- 把下面的代码新的源文件中:
这样的:
#include <Windows.h>
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
//your program should replace this loop:
while(1){
Sleep(100); //because of the the empty loop, I don't want to waste CPU...
}
return 0;
}
- 使用这种
wWinMain
为您main
,如果你需要您需要解析pCmdLine的参数。 - 注意,这是Unicode版本,对于非UNICODE使用只是
WinMain
和PSTR pCmdLine
这样的:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int nCmdShow)
- 如果要停止你所需要的程序,你可以使用任务管理器杀了它。
- 系统试图标也可以帮你,但你将需要至少一个窗口(可能是隐藏的)
什么是您的目标平台? – 2014-12-03 22:38:41
听起来像一个Windows用户。 – 2014-12-03 22:39:09
是的,Windows 8.1 – 2014-12-03 22:41:03