防止 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
通过传递此标志。
我在 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
通过传递此标志。