读书人

WINEXEC有问!该怎么处理

发布时间: 2013-01-01 14:04:19 作者: rapoo

WINEXEC有问!
用WINEXEC运行个命令行命令。这个批处理是一个7zip的压缩命令。 我想压缩后吧这个7zip.exe删掉。但是直接在winexec的下一行删。程序运行的时候说被占用。应该如何搞呢?
[解决办法]
WinExec调用命令时,发出命令后,不管有没有执行完成,就立即返回
象你这种解压应该是要花费一定时间的。这样就造成解压还在继续,但你程序已经执行到下一步了,所以就会出现你说的情况。

改用CreateProcess

[解决办法]


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;

[解决办法]
在批处理里头最后加上一行del "c:\7zip.exe"不就行了?

读书人网 >.NET

热点推荐