如何让我的控制台C ++程序在后台运行?

时间:2014-12-03 22:36:59

标签: c++ windows winapi background console

我需要它占用尽可能少的处理器时间,并且绝对不需要创建实际窗口。我只需要将这个过程挂在后台。

2 个答案:

答案 0 :(得分:2)

此请求最适合Windows服务概念。 example。{{3}}。您可以实现许多不同的方式,C / C ++与Qt或不/ C#。创建服务而不是隐藏控制台的优点是程序可通过标准Windows服务接口进行管理(un)注册/启动/停止/等。同时使用管理UI和控制台实用程序。

让应用程序消耗更少的CPU更加精致,取决于您的应用程序的功能,但更简单的答案是,不要运行紧密的循环并让它等待,直到需要处理某些东西。要覆盖的内容太多,例如线程等,但我们不知道你的程序做了什么。

答案 1 :(得分:0)

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)
  • 如果您的程序需要停止,您可以使用任务管理器将其删除。
  • 系统尝试图标也可以帮助你,但是你需要至少一个窗口(可能隐藏)