如何让我的控制台C++程序在后台工作?

问题描述:

我需要它占用尽可能少的处理器时间,并且绝对不需要创建实际的窗口。我只需要这个过程在背景中挂出。如何让我的控制台C++程序在后台工作?

+0

什么是您的目标平台? – 2014-12-03 22:38:41

+1

听起来像一个Windows用户。 – 2014-12-03 22:39:09

+0

是的,Windows 8.1 – 2014-12-03 22:41:03

此请求最适合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使用只是WinMainPSTR pCmdLine

这样的:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int nCmdShow) 
  • 如果要停止你所需要的程序,你可以使用任务管理器杀了它。
  • 系统试图标也可以帮你,但你将需要至少一个窗口(可能是隐藏的)