我在一个FORM上采用Shellexecute(Handle, nil, Pchar(EXEPath), nil, nil, SW_SHOWMAXIMIZED)来执行一个外部文件.我想程序在执行完这个外部EXE文件前不能进行任何其它的操作,并且在执行EXE文件前显示一个消息框提示"请稍候".也就是类似DELPHI中的SHOWMODEL那种功能似的.
还有为什么执行的时候要等很久EXE文件才能显示出来.谢谢!
还有为什么执行的时候要等很久EXE文件才能显示出来.谢谢!
解决方案 »
- SQL2000 简繁体语言问题!
- fastreport导出execl
- 请教一个DELPHI的异常处理的问题,着急中!
- edit中如何控制只能输入货币数字,如'123.00'
- delphi 如何将源程序编译成可执行程序
- 请zzheaptech(风的往事)进来,谢谢你的回答送分给你,顺便再问一下。
- 我要调用WinExec,但是不知道strnig如何转化为LPCTSTR?
- 找人:石庆,请留下联系方法,我知道你在这里。
- 大家好!! 用socket做数据库的三层结构!!送100分啊
- 还是关于用TMediaPlayer播放vcd的问题。难道一定要改system.ini才行?
- 关于VCL FrameWork 的消息处理问题
- 初学请教
var
CmdLine : array[0..512] of char;
zCurDir : array[0..255] of char;
WorkDir : string; StartupInfo : TStartupInfo;
ProcessInfo : TProcessInformation;
begin
StrPCopy(CmdLine, FileName);
WorkDir := ExtractFilePath(FileName);
StrPCopy(zCurDir, WorkDir);
FillChar(StartupInfo, Sizeof(StartupInfo),#0);
StartupInfo.cb := Sizeof(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := SW_SHOWNORMAL;
if CreateProcess(nil,
CmdLine,
nil,
nil,
false,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,
nil,
zCurDir,
StartupInfo,
ProcessInfo) then
begin
WaitForSingleObject(ProcessInfo.hProcess, TimeOut);
end;
end;
...
还是不行啊.如果设为-1的话要把当前程序退了才执行的到EXE文件.而设为其它的则实现不了,大家还有没有更好的办法啊
可以在其它人关闭记事本之前确保你的程序处在等待的状态。你的要求是?
CmdLine,
nil,
nil,
false,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,
nil,
zCurDir,
StartupInfo,
ProcessInfo) then
begin
self.enabled := false; //这里
WaitForSingleObject(ProcessInfo.hProcess, TimeOut);
self.enabled := true; //这里 end;
WaitForSingleObject(ProcessInfo.hProcess, TimeOut);
self.enabled := true; //这里如果不要self.enabled := true;这一句,功能就实现了.但是加上这一句后又不行了.但是我在程序中把这一保有取了后,程序返回后整个界面就运行不了了.