想实现如下功能,调用外部程序执行,调用成功后自身即退出,但是需要该外部程序运行状态能像手工点击运行的效果一样。解决方法

想实现如下功能,调用外部程序执行,调用成功后自身即退出,但是需要该外部程序运行状态能像手工点击运行的效果一样。
现在的问题是,如果我手工运行这个外部程序,那么程序工作是很正常的,可是当我用
ShellExecute(Handle, 'open ',pchar( 'd:\Project1.exe '),pchar( ' '),sw_show)运行它就不太正常,当我退出该外部程序时,这个程序就会报错。我想可能是运行时没有给它分配什么环境变量吧,那么我该如何设置它呢?

调用它的程序在调用完成后即退出,所以只剩下了这个外部程序在工作,希望它能像手工启动的一样能正常工作以及正常结束。




------解决方案--------------------
GetDesktopWindow 替换Handle

ShellExecute(GetDesktopWindow , 'open ',pchar( 'd:\Project1.exe '),pchar( ' '),sw_show)
------解决方案--------------------
//你的程序是否用到了当前路径?
ShellExecute(Handle, nil, 'd:\Project1.exe ', nil, 'd:\ ', SW_SHOW);

//or
WinExec( 'd:\Project1.exe ', SW_SHOW);