heavenm 发表于 2013-6-24 21:55:26

用A.EXE调用B.EXE,如何获取B.EXE的返回值?

我记得有个AU3内存互相通讯,找不到了
注册表,或者写文件的方式不太方便
TCP比较麻烦
有什么简便的方法获取返回值的吗?

pusofalse 发表于 2013-6-24 23:09:05

楼主兄说的返回值应该是指进程的退出代码吧?你是怎么调用b.exe的?如果是用RunWait的话,那么RunWait的返回值就是b.exe的退出代码。

heavenm 发表于 2013-6-25 17:35:30

本帖最后由 heavenm 于 2013-6-25 17:36 编辑

楼主兄说的返回值应该是指进程的退出代码吧?你是怎么调用b.exe的?如果是用RunWait的话,那么RunWait的返回 ...
pusofalse 发表于 2013-6-24 23:09 http://www.autoitx.com/images/common/back.gif

意思是
比如用
A.EXE
RunWait('B.EXE')
然后B.EXE得到一个值,(成功,失败,错误代码)之类的
A.EXE咋获取B.EXE的返回值比较方便?就类似调用DLL那样子!调用EXE
B.EXE也是AU3写的!

pusofalse 发表于 2013-6-25 18:16:00

回复 3# heavenm


    还是不太明白你的意思~猜想可能是这样:

B.exe:
; TODO: some code
; ... ...
Local $iValue = SomeFunc()
Exit $iValueA.exe:
Local $iExitCode = RunWait("B.exe")
MsgBox(0, "", $iExitCode)A.exe获取到的$iExitCode,将是B.exe中$iValue的值。$iValue只能是一个32位数,不能是字符串、数组等量,否则A.exe获取到的退出代码将会是0。

heavenm 发表于 2013-6-25 18:23:47

= =#难道表达太不清晰了!
A.EXE
RunWait ( "b.exe" )
$ok=IniRead ( "test.ini", "test", "test", "" )
MsgBox(0, '提示B.EXE已经完成秘密行动',$ok)
B.EXE
IniWrite ( "test.ini", "test", "test",Random (5) )

heavenm 发表于 2013-6-25 18:23:54

本帖最后由 heavenm 于 2013-6-25 18:26 编辑

= =#难道表达太不清晰了!
A.EXE
RunWait ( "b.exe" )
$ok=IniRead ( "test.ini", "test", "test", "" )
MsgBox(0, '提示B.EXE已经完成秘密行动',$ok)

B.EXE

IniWrite ( "test.ini", "test", "test",Random (5) )



就是A.EXE直接获取B.EXE结果的方式,有简单的方法不
不用写入一个INI文件来做中转

有时候防止程序出错,所以这样子调用!

pusofalse 发表于 2013-6-25 18:54:57

回复 6# heavenm


    单就你给出的这段代码来说,4#的代码可以实现你的目的。只不过random()可能会返回一个浮点数,应该首先将这个浮点数转换为整数,另外可能会丢失部分精度。如下:

B.exe:
#include <WinAPI.au3>

Local $iRandom = Random(5)
Exit _WinAPI_FloatToInt($iRandom)A.exe:#include <WinAPI.au3>

Local $iExitCode = RunWait("B.exe")
MsgBox(0, "", _WinAPI_IntToFloat($iExitCode)如果B.exe返回一个字符串的话,你也同样可以在B.exe中将字符串首先转为一个32位数,别问我怎么转换,CRC就是【字符串->32位数】的例子。

heavenm 发表于 2013-6-25 20:49:32

- -#天啊!用了这么多年的AU3了
第一次知道EXIT有参数
Exit [返回码]

P版神威
{:face (301):}

mbdnmt 发表于 2013-6-25 23:54:28

回复 4# pusofalse

正解!~~~~

hzxymkb 发表于 2013-6-29 13:50:04

http://www.autoitx.com/forum.php?mod=viewthread&tid=5425
请看这里!Ceoguang超版的杰作!

heavenm 发表于 2013-6-29 23:56:53

请看这里!Ceoguang超版的杰作!
hzxymkb 发表于 2013-6-29 13:50 http://www.autoitx.com/images/common/back.gif


    {:face (440):} 原来是叫程序通讯
这个关键字好难找到!
谢谢!研究下

wu5cheng3_bak 发表于 2013-6-30 16:03:52

回复 10# hzxymkb


    谢谢,收藏备用!~
页: [1]
查看完整版本: 用A.EXE调用B.EXE,如何获取B.EXE的返回值?