在没有控制台窗口的情况下启动程序(在后台)

aaj*_*tak 2 c windows background

我想在Windows启动时启动一个简单的程序,但我不想显示与该程序关联的控制台输出窗口.只是为了测试,程序可以像下面这样简单:

    int main (int argc, char** argv)
    {
        while (1)
        {
             printf ("hello world...\n");
             Sleep (10000);
        }
    return 0;
    }
Run Code Online (Sandbox Code Playgroud)

将其编译为: cl foo.c

我知道如何在Windows启动时启动程序(放入启动文件夹,创建注册表等),但我不知道如何隐藏程序启动时出现的控制台输出窗口.

在搜索时,我发现我可以使用start /B foo.exe.这样做还有其他方法吗?像"&"我们在unix上使用的一些东西.

我实际的程序是大,是用C,所以我不能用一些其他办法,我发现了c#(像WinMain函数)和java(如解释在这里).

Mar*_*tos 5

WinMain 不是 C# 入口点。C#使用静态类的方法;它默认称为 Main,但可以配置为任何静态类方法。

在 Windows 中,非控制台 C 程序应定义 WinMain。然后,您可以使用链接器的/subsystem:windows命令行选项来链接它们,可以直接调用或从 CL 调用。


Juh*_*uho 5

这应该工作.

#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdParam, int iCmdShow)
{
    for (;;) {
        //action here
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)