大虾们, 我现在需要由外部应用程序来调用一个delphi编写的exe程序, 希望等待该exe返回一个0/1,请教各位这个怎么编写?C有个exit函数,可以带返回码, Delphi的有没有?
解决方案 »
- (结贴率100%)请教Dxdraw控件问题!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- delphi 调用 .net webservice 提示 文本内容中发现无效字符!
- 难一点点的问题没人答么?
- 如何发送一个点击消息给目标程序Tlistview的第一个ITEM
- 如何点击一个弹出窗口的确定按纽?高分求解!
- fastreport图片的打印
- 动态创建组件的问题
- 急急急急急急急急!!!!???————在线等待???!!!
- 强行关机会影响电脑寿命吗?想做个定时关机的软件
- 怎么处始化combobox?
- 如何显示数据库中的图片(比如Access)
- 请教一个弱弱的问题!Delphi 中的 frame
所以,要想让程序返回值为1,则只需在程序中设置ExitCode := 1;即可。如下测试代码:program Project2;{$APPTYPE CONSOLE}uses
SysUtils;begin
{ TODO -oUser -cConsole Main : Insert code here } ExitCode :=10 ;
end.------
对返回值的测试:test.bat@echo off
rem test1.exe 为使用c++写的程序,返回值为33
test1.exe
echo test1.exe return %errorlevel%
rem project2.exe为上边的代码实现的结果
project2.exeecho project2.exe return %errorlevel%@echo on---------------
执行结果:
test1.exe return 33
project2.exe return 10说明:
本人以前也没有研究这个,但是在看到楼主的问题后感觉Delphi应该是可以解决的。于是通过使用debug工具跟踪,如下:00403595 |. FF15 24904000 |call dword ptr ds:[409024]
0040359B |> 8B06 |mov eax,dword ptr ds:[esi]
0040359D |. 50 |push eax ; /ExitCode
0040359E |. E8 EDDAFFFF |call <jmp.&kernel32.ExitProcess> ; \ExitProcess
所以Delphi的程序是有一个全局变量的:ds[esi]
其实这个变量就是ExitCode.请参考!