「已注销」 2022-08-09 02:43 采纳率: 60%
浏览 121

Delphi如何获取ShellExecute的返回值

问题遇到的现象和发生背景

Delphi相关问题。
ShellExecute的部分方法。
现在我有一个方法,例如我这个方法需要调用某个值,我用C语言在【文件】里面写了一个Hello.c文件,然后程序会固定输出一个Hello World程序,现在我需要用Delphi来调用这个Hello.exe,并且获得这个Hello.exe之后输出的Hello World返回值。如果用cmd调用这个exe,那可谓是非常简单。

我当然知道这里面是Hello World,但是我仍旧是需要知道如何获取其返回值。如果后期有人修改了Hello.c,并且修改了里面的Hello World,我需要知道这个这个exe将要输出的值是什么。

是的,这是个非常简单的程序,我希望能通过最少的代码解决这个问题。当然,我知道有一个函数为ShellExecute方法,但是这个函数似乎不能提供返回值,只能够运行相对应的exe文件。这种情况下我还是得问该如何获取其输出返回值。

当然,如果已经现有网址的话,那更好。我翻过百度、谷歌、bing,都找不到相关的代码与文档。如果有谁能够提意见,我会非常感谢的!

Delphi版本:11.1

问题相关代码,请勿粘贴截图
//这个是运行一个exe程序,我只是不知道其返回值罢了。
ShellExecute(Handle, nil, 'Hello.exe', '', nil, nil, SW_SHOWNORMAL);
运行结果及报错内容

没有运行结果,因为根本获取不到。

我的解答思路和尝试过的方法

尝试百度,尝试谷歌,尝试bing,但都没用,找不到相关代码,或者说是代码过于长了,以至于我找不到报错的地方。

我想要达到的结果

成功获取cmd运行的返回值。

  • 写回答

2条回答 默认 最新

  • taozc 2022-08-09 07:52
    关注

    CreateChildProcess创建子进程;
    CreatePipe创建管道;
    连接子进程的管道;
    从管道获取子进程输出。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月9日