社区
进程/线程/DLL
帖子详情
在一个线程中,使用CreateProcess启动了一个.Bat文件,不知道该怎么关闭出现的CMD窗口,请帮忙,谢谢!
VCILOVE
2005-08-07 02:59:03
在一个线程中,使用CreateProcess启动了一个.Bat文件,不知道该怎么关闭出现的CMD窗口,即使我关闭了这个线程也不能将CMD窗口关闭,而且线程也堵塞了,再给现成发消息都收不到了,只能把这个CMD手动关掉后才可以,当然我是用WaitForSingleObject,因为我希望BAT文件执行完成后,我能知道,大家有没有什么解决方案呢,谢谢!
...全文
721
17
打赏
收藏
在一个线程中,使用CreateProcess启动了一个.Bat文件,不知道该怎么关闭出现的CMD窗口,请帮忙,谢谢!
在一个线程中,使用CreateProcess启动了一个.Bat文件,不知道该怎么关闭出现的CMD窗口,即使我关闭了这个线程也不能将CMD窗口关闭,而且线程也堵塞了,再给现成发消息都收不到了,只能把这个CMD手动关掉后才可以,当然我是用WaitForSingleObject,因为我希望BAT文件执行完成后,我能知道,大家有没有什么解决方案呢,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
VCILOVE
2005-08-20
打赏
举报
回复
谢谢
gnixemos
2005-08-19
打赏
举报
回复
那是自己写的 .bat 有问题啊。
一般.bat运行后自己会结束关闭窗口的。
用不着手工去关闭。检查你写的.bat文件。
----------------------
楼上的正解
VCILOVE
2005-08-15
打赏
举报
回复
楼上说的很对啊,就是我的意思,
根据你的再去试试,谢谢
wuming945
2005-08-14
打赏
举报
回复
你是想在批处理文件没有结束前,主程序退出,让批处理文件的cmd窗口也关闭吧。
你可以注意一下,你用createprocess加载了那个批处理文件之后,在你的进程管理器中,你是找不到
那个与你的批处理文件对应的进程名和进程id的,其中多出来的进程名是在你的批处理文件中启动的程序的名字,所以,你可以考虑一下两种方法:1,在主程序退出是根据进程名terminateprocess掉那个有批处理文件启动的进程;2,不要加载那个批处理文件,而是直接加载批处理文件中启动的那些进程
younggle
2005-08-11
打赏
举报
回复
那是自己写的 .bat 有问题啊。
一般.bat运行后自己会结束关闭窗口的。
用不着手工去关闭。检查你写的.bat文件。
nelsonc
2005-08-11
打赏
举报
回复
FreeConsole
VCILOVE
2005-08-11
打赏
举报
回复
是在WAIT的时候,主程序退出,也想让CONSOLE退出,可是,主程序能退,CONSOLE却退不了
VCILOVE
2005-08-08
打赏
举报
回复
我的BAT文件执行完成后是会自动退出的,我之所以用Wait就是为了等待 BAT文件执行结束,好进行下面的操作,请大家再给看看
nelsonc
2005-08-08
打赏
举报
回复
那是Wait不能结束?还是结束后Console窗口还没关掉?
longyii
2005-08-07
打赏
举报
回复
agree,在bat里加exit
gohappy_1999
2005-08-07
打赏
举报
回复
顶一下
dirdirdir3
2005-08-07
打赏
举报
回复
同意xqchang(),加上exit会自动退出。
nelsonc
2005-08-07
打赏
举报
回复
这样:
1. 用AllocConsole创建一个Console窗口。
2. 用GetConsoleWindow取得Console窗口的句柄。
3. 把Console窗口Hide掉,用ShowWindow(...)。
4. 调用CreateProcess。
我没试过,你试试看。
xqchang
2005-08-07
打赏
举报
回复
要么用ShellExute,要么在BAT文件最后一行加上“exit”试试。
VCILOVE
2005-08-07
打赏
举报
回复
if( !CreateProcess( NULL, // No module name (use command line).
(LPTSTR)(LPCTSTR)strBatFileName, // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
NULL, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi // Pointer to PROCESS_INFORMATION structure.
)
)
{
bReturnVal = FALSE;
}
else
{
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}
return bReturnVal;
快乐鹦鹉
2005-08-07
打赏
举报
回复
能看一下CreateProcess函数你是怎么调用的么?我指参数都是什么?
隐藏
cmd
命令行
窗口
C++源码
项目有时候需要不显示
cmd
窗口
,资源为隐藏
cmd
命令行
窗口
的C++源码,适合C++开发者
VC++实现
CMD
命令执行与获得返回信息
VC++6.0实现
CMD
命令执行与获得返回信息,用
CreateProcess
执行
CMD
命令,用命名管道来获得返回的数据.基本上可以执行所有
CMD
命令.
WifiSharing_C++利用批处理实现
WifiSharing_C++利用批处理实现 主要是想练习
CreateProcess
执行批处理
无限弹窗的各种常用代码(cpp和
bat
)
有c++和批处理的版本,可以弹出大量
cmd
窗口
卡爆电脑
vc++调用批处理程序
最近编写了
一个
vc简单调用批处理
文件
的程序,和大家分享
进程/线程/DLL
15,467
社区成员
49,170
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章