用A.EXE调用B.EXE,如何获取B.EXE的返回值?
我记得有个AU3内存互相通讯,找不到了注册表,或者写文件的方式不太方便
TCP比较麻烦
有什么简便的方法获取返回值的吗? 楼主兄说的返回值应该是指进程的退出代码吧?你是怎么调用b.exe的?如果是用RunWait的话,那么RunWait的返回值就是b.exe的退出代码。 本帖最后由 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写的! 回复 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。 = =#难道表达太不清晰了!
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: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文件来做中转
有时候防止程序出错,所以这样子调用! 回复 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位数】的例子。 - -#天啊!用了这么多年的AU3了
第一次知道EXIT有参数
Exit [返回码]
P版神威
{:face (301):} 回复 4# pusofalse
正解!~~~~ http://www.autoitx.com/forum.php?mod=viewthread&tid=5425
请看这里!Ceoguang超版的杰作! 请看这里!Ceoguang超版的杰作!
hzxymkb 发表于 2013-6-29 13:50 http://www.autoitx.com/images/common/back.gif
{:face (440):} 原来是叫程序通讯
这个关键字好难找到!
谢谢!研究下 回复 10# hzxymkb
谢谢,收藏备用!~
页:
[1]