关于DELPHI,调用EXE程序,并显示返回值

打算用Delphi做一个软件,给出EXE运行文件的完整路径,并给出参数,例如:C:\ProgramFiles(x86)\Microchip\MPLABIDE\Progra... 打算用Delphi做一个软件,给出EXE运行文件的完整路径,并给出参数,例如:C:\Program Files (x86)\Microchip\MPLAB IDE\Programmer Utilities\ICD3\ICD3CMD.EXE -V -P -E -M -Y
,可以在Delphi 的 memo 控件中显示返回的结果,如下:
NO DEVICE CONNECTED

请各位大神指导代码如何写,谢谢!
展开
 我来答
syht2000
高粉答主

2014-12-16 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
追问
Memo1.Text := RunDOS('cd C:\Program Files (x86)\Microchip');
Memo1.Text := RunDOS('ICD3CMD');
是这样用吗,报错了,“系统找不到指定文件”,错误指向了raise Exception.Create(SysErrorMessage(GetLastError));
追答
大要看了一下没这样用的,大概应该就是
Memo1.Text := RunDOS('C:\Program Files (x86)\Microchip\MPLAB IDE\Programmer Utilities\ICD3\ICD3CMD.EXE -V -P -E -M -Y');
这里还有另外一种重定向输出输出的方法http://guanyue7613.blog.163.com/blog/static/8851474201325114242763/
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dodolon
2014-12-16 · TA获得超过7713个赞
知道大有可为答主
回答量:4477
采纳率:84%
帮助的人:2109万
展开全部
郁闷,你自己都说不清楚。调用EXE程序,并显示返回值,应该是你的程序调用别的程序并显示别的程序返回值,后面的说明又是给你自己的程序带参数运行,程序根据参数显示结果。到底是哪个?
追问
就和在 命令行中直接输入CMD一样,按下回车,下面就会显示版本信息
现在就是想用Delphi做个软件,也可以完成这个功能,很多软件在调用的时候也需要加入一些设置指令,比如加一个: -H 什么的我查了一下,可以用 winexec()来调用其他的EXE程序,但是调用之后的返回值如何显示就不知道了
追答

要得到这种控制台程序(类似DOS外部命令)的返回结果,总的来说要用到重定向。初级的方法是调用被调用的程序时,让被调用程序的输出重定向到一个文件,然后你的程序读取这个文件就行了。问题是WinExec调用程序时不支持被调用程序输出重定向。比如要得到CMD.exe /?的结果,可以在“命令提示符”窗口中输入命令行CMD.exe /? > R:\aa.txt后回车,结果就存到文件R:\aa.txt中了,而在Delphi中用

  winexec('cmd.exe /? > R:\aa.txt',9);

却不行。解决方法是Delphi程序调用CMD程序,再利用CMD.exe的/C参数来调用你要调用的程序,这样你要调用的程序就在CMD程序的环境下运行,就可以利用重定向了。象这样

  winexec('cmd.exe /C cmd.exe/?>r:\aa.txt',9);

这样就行了,这里当第二个cmd.exe就是你要调用的程序。但用winexec来调用,CMD的/C参数后面的参数不能有空格,如果你要调用的程序有多个参数要用空格分隔,就又不行了。改用ShellExecute来完成:

高级的方法另一位知友已给出,我就不说了。原理就是Delphi程序创建一个控制台环境(也就相当于CMD的环境),然后让你要调用的程序在这个控制台环境下运行,Delphi程序就能获得这个控制台环境下输出的东西。这种高级代码很难读得懂哦。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式