我编了个读写文件的测试程序(用ShellExecute执行的)。即把数据写入文件,然后打开,删除。详细的代码如下:
if(MessageBox("执行命令?","询问",MB_ICONQUESTION|MB_OKCANCEL)==IDOK)
{
ShellExecute(NULL,"open","E:\\1.txt",NULL,"E:\\1",SW_HIDE);
MessageBox("执行成功!");
remove("E:\\1.txt");
}
前面的代码是把数据写入文件,写入是没有问题的,但是后面文件就打不开了,而且也删除不掉。但是把这段程序拿出MessageBox执行就一点问题没有。请问到底是哪出了问题?
if(MessageBox("执行命令?","询问",MB_ICONQUESTION|MB_OKCANCEL)==IDOK)
{
ShellExecute(NULL,"open","E:\\1.txt",NULL,"E:\\1",SW_HIDE);
MessageBox("执行成功!");
remove("E:\\1.txt");
}
前面的代码是把数据写入文件,写入是没有问题的,但是后面文件就打不开了,而且也删除不掉。但是把这段程序拿出MessageBox执行就一点问题没有。请问到底是哪出了问题?
解决方案 »
- [疯狂斗地主]出了好牌,却被别人给玩了
- 如何打开某图片,把图片里的2进制数据保存在某东东里,用什么东东保存?谢谢!!!
- 急求:对字符图像如何行切割和字符切割?(最后6分,分用光了,弹尽粮绝)
- 多线程访问数据库时应该怎么进行临界区保护呢?
- VC6能否调用VB.net写的dll文件,如何实现?
- 从其他工程导入的对话框,而引起的资源问题如何调试和解决?(跪求各位高手!!!)
- ADO对象更新的问题?非常的急
- 关于CList的模板参数的问题
- 你们一般有多少天年假?我们一天都没有啊!~~~
- MFC中如何将对话框中的数据传递到文档中
- 按着不放按钮一直响应消息,怎么实现啊?在线等
- 请问如何修改CStatic类的文字属性
中间加delay 函数 (可能还不行)最好用CreateProcess 函数 然后使用WaitForSingleObject(pi.hProcess, INFINITE); 检测线程是否执行完毕,线程退出后再 remove 就没问题了
注意 前面另外开了一个线程 ,并没返回 就是说 你的open操作还在进行!
MessageBox("执行成功!"); 并不说明 open函数执行完毕!!!!
那应该怎么关闭,我在写文件完后加了file.Close也不行啊!
ShellExecuteEx();
然后
WaitForSingleObject();
remove("E:\\1.txt");
或者之前 加一个延时函数 sleep(....)的延时一段时间,就行了。不过延时的方法不大保险,还是用 WaitForSingleObject(); 等线程结束的方式比较好