2010-03-11 75 views
4

我想在运行我的应用程序时隐藏C的控制台。我如何让我的应用程序在后台运行?在Windows操作系统中隐藏C程序的控制台

+0

我的应用程序包含许多不同的过程,这些过程是为了充分满足用户的功能。但用户只与主GUI交互,所以我想隐藏所有其他进程。 – Siddiqui 2010-03-11 04:02:45

回答

5

main()默认程序被编译为子系统:控制台应用程序,并得到一个控制台窗口。如果您拥有自己的应用程序启动等过程,你可以对其进行修改通过下面的方法之一是窗口应用程序:

  • 修改他们使用WinMain(),而不是main()。这是典型的方法,但需要修改代码。 (如果使用main()的原因是容易获得argc/argv,MSVC提供全球__argc/__argv当量为窗口应用程序。)
  • 明确经由/SUBSYSTEM:WINDOWS /ENTRY:main参数指定子系统和入口点link.exe
  • 使用editbin.exe改变事后子系统类型。如果您没有源代码访问产生的进程,这个可能很有用。
+0

谢谢你的帮助。 – Siddiqui 2010-03-12 10:55:53

+0

对于GCC,-mwindows类似于/ SUBSYSTEM:WINDOWS – a3f 2015-01-06 23:16:23

2

要做到这一点最简单的方法是使用Windows窗体的项目,而不是控制台,然后隐藏启动窗体。当然,另一种选择是一个Windows服务,但如果我没有记错,有没有办法做到这一点编程,这可能是矫枉过正...

+0

你的答案就像我的。 +1。 – 2010-03-11 04:05:19

0

。有选项可以做到这一点。我想我已经通过创建一个Windows项目来完成它,但没有Windows Forms代码(我只包括来自我的控制台应用程序的文件)。没有控制台窗口弹出。我相信我曾在Code::Blocks中通过更改GUI中的选项来完成它。我很抱歉,我不能具体说明,但我正在使用Visual Studio 2010 RC,我在那里做的方式可能与您的不一样。

你的评论让我觉得,你在产卵过程。你通过你所调用的功能来做到这一点。我不知道你在用什么语言(我会假设C,因为你说你启动了一个你创建的C应用程序?),但是有一个标志可以隐藏窗口或者不要设置为不显示它)或使用可替代的功能来执行相同的操作,但会以不同的方式启动该过程。尝试shellexecute和system()。

0

使用CreateProcessDETACH_PROCESS标志。

相关问题