防止 C 可执行文件进入前台

Preventing C executable from going into foreground

我在 Windows 上用 C 编写了一个笑话程序,它在后台启动并弹出愚蠢的 windows。这是一个有趣的项目,但它引发了 question/curiosity.

C代码如下:

    #include <windows.h>
    #include <unistd.h>
    #include <stdbool.h>

    //IMPORTANT!!! You should compile this program using the -mwindows specification on GCC.

    int main(void){

      while(true){
    
        MessageBeep(MB_OK);
        MessageBox(0 , "Blip" , NULL , MB_OK);
        sleep(5);
        MessageBeep(MB_OK);
        MessageBox(0 , "Blop" , NULL , MB_OK);
        sleep(5);
        MessageBeep(MB_OK);
        MessageBox(0 , "Blup" , NULL , MB_OK);
        sleep(5);
    
      }

      return 0;


    }

我使用 -mwindows 选项用 GCC 编译了它,使可执行文件在后台打开,而不是作为控制台可执行文件。这一切都很好,花花公子。但是,在这个 .exe 运行 时打开 任务管理器 我注意到该程序在休眠时将留在后台,但它会在 任务管理器 当弹出窗口 window 打开时。有什么办法可以防止这种情况发生吗?有什么方法可以在 .exe 打开时将其保留在后台 windows?我认为这会让节目更有趣。

关于奖金相关的问题,有什么方法可以更改 任务管理器 中显示的可执行文件的名称?这会使 .exe 停止时更加烦人。

由于您正在使用 MessageBox,请传递标志 MB_SERVICE_NOTIFICATION。这个标志不再像它说的那样做了,但是通过 csrss.exe 代理它的代码仍然存在,与桌面关联的应用程序仍然可以启动 MessageBox window (仅此而已)来自 csrss.exe 通过传递此标志。