【发布时间】:2019-09-23 13:05:48
【问题描述】:
我正在尝试在 Windows 10 中以 C++ 编写的后台运行可执行文件。该程序没有任何 GUI。我试过这个
window = FindWindowA("ConsoleWindowClass", NULL);
ShowWindow(window,0);
但是,尽管它在 Windows 7 上确实可以工作并打开并立即关闭控制台,并且可执行文件在后台运行,但在 Windows 10 上它会打开一个控制台并且控制台保持打开状态。如果我使用 run /B main.exe 运行 .exe,我必须保持控制台打开以使程序继续运行,如果我关闭 cmd 控制台执行将停止。
有没有办法以编程方式在后台运行文件?我知道我可以使用 vbscript 在后台运行它,但我想避免这种情况。
【问题讨论】:
-
您可以为应用程序明确地create a process。除非它包含显式显示控制台窗口的代码,否则不应显示 IIRC。
-
但这意味着必须编写 2 个程序,对吗?据我在文档中阅读,
createprocessa的输入参数要求我提供可执行文件的路径。我希望将所有这些都放在一个程序中,包括在后台运行的选项以及主程序的其余部分。 -
所以你有一个程序,它自己执行?没关系,您仍然可以使用
CreateProcess来执行您有路径的任何 程序,包括它自己。或者(并不真正知道您要解决的问题)也许您真正想要的是使用 threads 在“后台”运行程序的某些部分? -
CreateProcess()具有隐藏它产生的进程的标志。如果您生成一个控制台应用程序,您可以告诉它隐藏创建的控制台窗口。您无需事后寻找窗口并手动隐藏它 -
@Hamperfait 你试过 FreeConsole() 吗?如果我在没有调试器的情况下启动它,控制台就会消失——从 Visual Studio 启动时仍然可见。所以它应该完成这项工作。我只有一个win10——所以我不知道别人的行为..
标签: c++ winapi background windows-10