c++ 执行system函数会打开命令窗口,怎么不让命令窗口打开

foley_liao 2010-11-17 05:21:02
如题,c++ 执行system函数会打开命令窗口,会闪一下,怎么不让命令窗口打开。
...全文
2072 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu163169 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jxnktjlfr1 的回复:]
呵呵,我找到方法了:
String sFileName;
sFileName = "d:\dir.bat " ;
ShellExecute(NULL, "Open ", sFileName.c_str(), NULL, NULL, SW_HIDE);
你要做的什么程序写在dir.bat中
[/Quote]
学习了,这个在某些地方有大作用哦~~
foley_liao 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cdsxyx 的回复:]

system("cmd /c");
WinExec("cmd /c", SW_HIDE);
[/Quote]

这个也可以哦,谢谢
clhposs 2010-11-17
  • 打赏
  • 举报
回复
匿名管道,你去学一下!
foley_liao 2010-11-17
  • 打赏
  • 举报
回复
呵呵,我找到方法了:
String sFileName;
sFileName = "d:\dir.bat " ;
ShellExecute(NULL, "Open ", sFileName.c_str(), NULL, NULL, SW_HIDE);
你要做的什么程序写在dir.bat中
mapoor 2010-11-17
  • 打赏
  • 举报
回复
--! 你是想 运行cmd.exe 又不想要人家的 黑框框。
这怎么行。
勋章 老哥说的 CreateProcess 貌似可以。没用过, 不过超多参数

BOOL WINAPI CreateProcess(
__in LPCTSTR lpApplicationName,
__in_out LPTSTR lpCommandLine,
__in LPSECURITY_ATTRIBUTES lpProcessAttributes,
__in LPSECURITY_ATTRIBUTES lpThreadAttributes,
__in BOOL bInheritHandles,
__in DWORD dwCreationFlags,
__in LPVOID lpEnvironment,
__in LPCTSTR lpCurrentDirectory,
__in LPSTARTUPINFO lpStartupInfo,
__out LPPROCESS_INFORMATION lpProcessInformation
);



ls老哥的 winexec 给力 试试
半斗 2010-11-17
  • 打赏
  • 举报
回复
system("cmd /c");
WinExec("cmd /c", SW_HIDE);
foley_liao 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 loaden 的回复:]

引用 3 楼 jxnktjlfr1 的回复:

引用 1 楼 loaden 的回复:

如果是VC,就简单了。

下面的方法适合VC编译器。
C/C++ code

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
#include <iostream>

using……
[/Quote]
CreateProcess 要怎么使用呢
老邓 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jxnktjlfr1 的回复:]

引用 1 楼 loaden 的回复:

如果是VC,就简单了。

下面的方法适合VC编译器。
C/C++ code

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
#include <iostream>

using namespace std;

int mai……
[/Quote]
用CreateProcess,隐藏目标窗口。
system只是简单的调用,做不到的。
或者被调用的命令窗口,用我的方法写。
foley_liao 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 loaden 的回复:]

如果是VC,就简单了。

下面的方法适合VC编译器。
C/C++ code

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
#include <iostream>

using namespace std;

int main()
{
cout << "Hello wor……
[/Quote]

不知道是我理解你们的答案错了,还是我没把我想说的说清楚,我是说
在c++中 如果执行 system("cmd");则会打开命令窗口,但是我不想让它打开,怎么办
老邓 2010-11-17
  • 打赏
  • 举报
回复
如果是MinGW编译器(GCC用于Windows),则可以指定连接参数:-mwindows
老邓 2010-11-17
  • 打赏
  • 举报
回复
如果是VC,就简单了。

下面的方法适合VC编译器。

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
#include <iostream>

using namespace std;

int main()
{
cout << "Hello world!" << endl;
return 0;
}


或者:ALT+F7后手动调整连接器子系统为subsystem:\windows解决问题。
GCC可用类似subsystem:\windows的方法来解决。

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧