gpt4 book ai didi

c++ - 如何使 C++ 程序在后台进程直到计算机关闭?

转载 作者:IT老高 更新时间:2023-10-28 22:26:59 30 4
gpt4 key购买 nike

  • window :

    1. 是否可以让 C++ 程序在后台执行而不显示任何控制台或 GUI?还有,怎么做?

    2. 如何让它在计算机关闭之前处理?

    3. 请问,当这个程序处于事件状态时,我该如何维持一个函数的执行?

IDE:Visual Studio 2013

最佳答案

第 1 步:如果您使用的是 IDE,那么在项目创建期间,它很可能会询问“console-app”还是“window-app”。选择window-app,这意味着它将在不打开控制台的情况下启动。

enter image description here enter image description here

第 2 步: 现在在代码中,您的 IDE 可能会生成一些使窗口可见的代码。删除该代码:

enter image description here

您的程序现在运行,但在任务栏上不可见:

enter image description here

要运行您自己的代码,您有 2 个选项。哪一个合适取决于您的情况,但通常首选第二个:

  • 要么使用生成的方法之一(如 WinMain)来启动您自己的方法,该方法应包含一个循环,并在该循环内您的代码加上对 Sleep() 的调用。

  • 使用 windows-messages 按需运行一些代码。 (首选)

程序将一直运行,直到您的计算机关闭;那么它将不再运行。


关于何时使用选项 1 和选项 2 的几点说明:

选项 2 通常被认为更好,因为它操作系统 (Windows) 一起工作,它仅在操作系统告诉它发生更改时才执行代码。另一方面,选项 1 不依赖于 Windows 消息 - 有时您需要这种独立性。但它是有代价的:你的代码可能会“手动”检查是否有变化,有时会做一些事情,但大多数时候会选择 Sleep()。这称为 ->polling顺便提一句。所以更喜欢选项 2。


这就是如何为 option-2-apps 修改 WndProc。示例:每秒发出一次哔声。

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
#define IDT_TIMER1 123 // todo find out which numbers are allowed
// which depends on windows AND your organization
case WM_CREATE:
SetTimer(hWnd, IDT_TIMER1, 1000, (TIMERPROC) NULL);
break;
case WM_TIMER:
switch (wParam) {
case IDT_TIMER1:
Beep(100,50);
break;
}
break;
case WM_COMMAND:
...

关于c++ - 如何使 C++ 程序在后台进程直到计算机关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21643933/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com