使用 gcc/g++ 使 C++ 程序在没有窗口的情况下运行? [复制]
Posted
技术标签:
【中文标题】使用 gcc/g++ 使 C++ 程序在没有窗口的情况下运行? [复制]【英文标题】:Make a C++ Program Run without a Window Using gcc/g++? [duplicate] 【发布时间】:2017-09-14 04:02:02 【问题描述】:我有一个非常简单的程序;它永远播放由循环路径定义的单个音频文件,直到程序终止。代码在这里:
#include <windows.h>
#include <mmsystem.h>
#include <iostream>
using namespace std;
int main(void)
PlaySound("C:\\Users\\Ben\\Desktop\\silence.wav", NULL, SND_LOOP | SND_ASYNC | SND_FILENAME);
cin.get();
return 0;
程序本身运行良好,但正如您所料,它会生成一个空白控制台窗口,就像任何程序一样。但是由于我想让这个程序在后台运行并且不可见,我是否可以编写它以便它根本没有窗口?我意识到如果我这样做了,唯一的出路就是从流程管理器中结束它,但这很好。另外,我只想在代码中/从 g++ 编译器中执行此操作;我尝试阅读有关使用 Visual Studio 执行此操作的信息,但我永远无法让它工作,而且对于这种规模的东西似乎真的没有必要。感谢您的建议。
【问题讨论】:
它不是重复的——OP 明确指出:“有可能.. 它根本没有窗口吗?” 【参考方案1】:int main()
FreeConsole();
PlaySound(...);
...
这种程序只能从任务管理器中杀死。您可能需要考虑设置某种 IPC,以便您可以指示现有实例关闭声音并退出。
【讨论】:
当我这样做时,窗口只是短暂显示然后消失。我检查了任务管理器,该进程没有运行。除此之外,我没有对我的代码进行任何修改。此外,我尝试了上面的链接,这个问题被标记为重复,但这对我不起作用;它可以构建,但是当我运行它时,什么也没有发生,而且我在任务管理器中也看不到它。 如果您没有控制台,cin.get()
将无法工作。请改用Sleep(INFINITE);
。
有道理,感谢您指出这一点。到时候我会把它标记为答案,虽然我要到明天才能测试它。
如果你使用Sleep(INFINITE)
,那么杀死你的程序的唯一方法就是通过任务管理器。
@Dúthomhas 这正是我想要的。它应该类似于 Windows 服务或类似的东西。以上是关于使用 gcc/g++ 使 C++ 程序在没有窗口的情况下运行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章