在Windows操作系统中隐藏C程序的控制台
与main()
默认程序被编译为子系统:控制台应用程序,并得到一个控制台窗口。如果您拥有自己的应用程序启动等过程,你可以对其进行修改通过下面的方法之一是窗口应用程序:
- 修改他们使用
WinMain()
,而不是main()
。这是典型的方法,但需要修改代码。 (如果使用main()
的原因是容易获得argc
/argv
,MSVC提供全球__argc
/__argv
当量为窗口应用程序。) - 明确经由
/SUBSYSTEM:WINDOWS /ENTRY:main
参数指定子系统和入口点link.exe
。 - 使用
editbin.exe
改变事后子系统类型。如果您没有源代码访问产生的进程,这个可能很有用。
要做到这一点最简单的方法是使用Windows窗体的项目,而不是控制台,然后隐藏启动窗体。当然,另一种选择是一个Windows服务,但如果我没有记错,有没有办法做到这一点编程,这可能是矫枉过正...
你的答案就像我的。 +1。 – 2010-03-11 04:05:19
。有选项可以做到这一点。我想我已经通过创建一个Windows项目来完成它,但没有Windows Forms代码(我只包括来自我的控制台应用程序的文件)。没有控制台窗口弹出。我相信我曾在Code::Blocks中通过更改GUI中的选项来完成它。我很抱歉,我不能具体说明,但我正在使用Visual Studio 2010 RC,我在那里做的方式可能与您的不一样。
你的评论让我觉得,你在产卵过程。你通过你所调用的功能来做到这一点。我不知道你在用什么语言(我会假设C,因为你说你启动了一个你创建的C应用程序?),但是有一个标志可以隐藏窗口或者不要设置为不显示它)或使用可替代的功能来执行相同的操作,但会以不同的方式启动该过程。尝试shellexecute和system()。
使用CreateProcess
与DETACH_PROCESS
标志。
我的应用程序包含许多不同的过程,这些过程是为了充分满足用户的功能。但用户只与主GUI交互,所以我想隐藏所有其他进程。 – Siddiqui 2010-03-11 04:02:45