WINEXEC有问!

一路随云 2012-11-08 06:26:25
用WINEXEC运行个命令行命令。这个批处理是一个7zip的压缩命令。 我想压缩后吧这个7zip.exe删掉。但是直接在winexec的下一行删。程序运行的时候说被占用。应该如何搞呢?
...全文
212 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
山东蓝鸟贵薪 2012-11-11
  • 打赏
  • 举报
回复
网上有WINEXEC的相关实例的,楼主可要努力找找了
s11ss 2012-11-11
  • 打赏
  • 举报
回复
引用 7 楼 HSFZXJY 的回复:
至s11ss:批处理是一条一条执行下去的,你执行del时7zip可能还在跑,会提示资源占用
给你个批处理,你看Hello是不是在winver结束后才显示。 [code=BatchFile]@echo off winver echo Hello pause[/code] 当然如果是用start命令启动7zip,那就要加/WAIT参数,不然就会如你所说“执行del时7zip可能还在跑”。
s11ss 2012-11-10
  • 打赏
  • 举报
回复
在批处理里头最后加上一行del "c:\7zip.exe"不就行了?
hsfzxjy 2012-11-10
  • 打赏
  • 举报
回复
至s11ss:批处理是一条一条执行下去的,你执行del时7zip可能还在跑,会提示资源占用
蓝色光芒 2012-11-09
  • 打赏
  • 举报
回复

var
  SI : TStartupInfo;
  PI : TProcessInformation;
begin
  FillChar(SI , SizeOf(SI) , 0);
  SI.cb := SizeOf(SI);
  CreateProcess(NIL , 'notepad.exe' , NIL , NIL , False , 0 , NIL , NIL , SI , PI);
  WaitForSingleObject(PI.hProcess , INFINITE);//等待 notepad执行完成
  CloseHandle(PI.hThread);
  CloseHandle(PI.hProcess);
end;
hsfzxjy 2012-11-09
  • 打赏
  • 举报
回复
学习楼上。。。
hsfzxjy 2012-11-08
  • 打赏
  • 举报
回复
这。。很难办,因为你不知道它什么时候退出
cdchq 2012-11-08
  • 打赏
  • 举报
回复
WinExec调用命令时,发出命令后,不管有没有执行完成,就立即返回 象你这种解压应该是要花费一定时间的。这样就造成解压还在继续,但你程序已经执行到下一步了,所以就会出现你说的情况。 改用CreateProcess
SQLDebug_Fan 2012-11-08
  • 打赏
  • 举报
回复
等待WinExec执行完成,然后用DeleteFile删除7Zip.exe

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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