用delphi写的exe去调用另外的exe,出现奇怪有关问题
用delphi写的exe去调用另外的exe,出现奇怪问题
我用delphi编写了一个exe,作用就是调用外部的其他exe文件(可能是vc写的那种DOS窗口的程序),但是调用不正常,那个程序只是闪了一下就自己关闭了,但是我调用其他像QQ这类的程序,就可以正常打开;另外,我用批处理去调用那个DOS程序,就可以正常运行,这是为什么,请高手解答?
我测试了一下,怀疑是执行的路径有点问题,因为调用的exe文件并不是在同一个文件目录下面,用批处理进入到那个目录,然后再运行,就能正常调用,但是delphi我就不会用了
------解决方案--------------------
我一般都是调用exe文件,方法是:WinExec( '子文件\*.exe ',SW_SHOWDEFAULT);但是对于非exe程序我就不知道了。
------解决方案--------------------
用ShellExecute或者CreatProcess吧
Winexec毕竟有限制
------解决方案--------------------
(长久以来一直潜水,今天透透气啦。)
应该不关使用哪个API的问题,怀疑是LZ把所谓的“DOS程序”理解错了:
因为用VC写出来的那个看上去很像DOS程序的东东是Console(控制台)程序,这个Console执行完了以后就会自动关闭控制台窗口的,如果是真正意义上的DOS程序就不会自动关闭控制台窗口,而使用批处理来调用的时候,可能是因为cmd.exe的缘故,控制台窗口不会自动关闭。
你可以试试,用VC或者Delphi写一个Console程序,在程序的结尾加上scanf(...);或者Readln;然后再用WinExec等等的API调用它看看,应该就不会出现“程序只是闪了一下就自己关闭了”的问题的。
我用delphi编写了一个exe,作用就是调用外部的其他exe文件(可能是vc写的那种DOS窗口的程序),但是调用不正常,那个程序只是闪了一下就自己关闭了,但是我调用其他像QQ这类的程序,就可以正常打开;另外,我用批处理去调用那个DOS程序,就可以正常运行,这是为什么,请高手解答?
我测试了一下,怀疑是执行的路径有点问题,因为调用的exe文件并不是在同一个文件目录下面,用批处理进入到那个目录,然后再运行,就能正常调用,但是delphi我就不会用了
------解决方案--------------------
我一般都是调用exe文件,方法是:WinExec( '子文件\*.exe ',SW_SHOWDEFAULT);但是对于非exe程序我就不知道了。
------解决方案--------------------
用ShellExecute或者CreatProcess吧
Winexec毕竟有限制
------解决方案--------------------
(长久以来一直潜水,今天透透气啦。)
应该不关使用哪个API的问题,怀疑是LZ把所谓的“DOS程序”理解错了:
因为用VC写出来的那个看上去很像DOS程序的东东是Console(控制台)程序,这个Console执行完了以后就会自动关闭控制台窗口的,如果是真正意义上的DOS程序就不会自动关闭控制台窗口,而使用批处理来调用的时候,可能是因为cmd.exe的缘故,控制台窗口不会自动关闭。
你可以试试,用VC或者Delphi写一个Console程序,在程序的结尾加上scanf(...);或者Readln;然后再用WinExec等等的API调用它看看,应该就不会出现“程序只是闪了一下就自己关闭了”的问题的。