找回密码
 加入
搜索
查看: 7164|回复: 11

[AU3基础] 用A.EXE调用B.EXE,如何获取B.EXE的返回值?

  [复制链接]
发表于 2013-6-24 21:55:26 | 显示全部楼层 |阅读模式
我记得有个AU3内存互相通讯,找不到了
注册表,或者写文件的方式不太方便
TCP比较麻烦
有什么简便的方法获取返回值的吗?
发表于 2013-6-24 23:09:05 | 显示全部楼层
楼主兄说的返回值应该是指进程的退出代码吧?你是怎么调用b.exe的?如果是用RunWait的话,那么RunWait的返回值就是b.exe的退出代码。
 楼主| 发表于 2013-6-25 17:35:30 | 显示全部楼层
本帖最后由 heavenm 于 2013-6-25 17:36 编辑
楼主兄说的返回值应该是指进程的退出代码吧?你是怎么调用b.exe的?如果是用RunWait的话,那么RunWait的返回 ...
pusofalse 发表于 2013-6-24 23:09


意思是
比如用
A.EXE
RunWait('B.EXE')

然后B.EXE得到一个值,(成功,失败,错误代码)之类的
A.EXE咋获取B.EXE的返回值比较方便?就类似调用DLL那样子!调用EXE
B.EXE也是AU3写的!
发表于 2013-6-25 18:16:00 | 显示全部楼层
回复 3# heavenm


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

B.exe:
; TODO: some code
; ... ...
Local $iValue = SomeFunc()
Exit $iValue
A.exe:
Local $iExitCode = RunWait("B.exe")
MsgBox(0, "", $iExitCode)
A.exe获取到的$iExitCode,将是B.exe中$iValue的值。$iValue只能是一个32位数,不能是字符串、数组等量,否则A.exe获取到的退出代码将会是0。
 楼主| 发表于 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) ) 
 楼主| 发表于 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文件来做中转

有时候防止程序出错,所以这样子调用!
发表于 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位数】的例子。

评分

参与人数 1金钱 +120 收起 理由
heavenm + 120 神人

查看全部评分

 楼主| 发表于 2013-6-25 20:49:32 | 显示全部楼层
- -#天啊!用了这么多年的AU3了
第一次知道EXIT有参数
Exit [返回码]

P版神威
发表于 2013-6-25 23:54:28 | 显示全部楼层
回复 4# pusofalse

正解!~~~~
发表于 2013-6-29 13:50:04 | 显示全部楼层
http://www.autoitx.com/forum.php?mod=viewthread&tid=5425
请看这里!Ceoguang超版的杰作!
 楼主| 发表于 2013-6-29 23:56:53 | 显示全部楼层
请看这里!Ceoguang超版的杰作!
hzxymkb 发表于 2013-6-29 13:50



    原来是叫程序通讯
这个关键字好难找到!
谢谢!研究下
发表于 2013-6-30 16:03:52 | 显示全部楼层
回复 10# hzxymkb


    谢谢,收藏备用!~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-25 00:19 , Processed in 0.100688 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表