找回密码
 加入
搜索
查看: 2996|回复: 7

[AU3基础] [已解决]Au3与控制台程序的交互

  [复制链接]
发表于 2015-10-31 17:39:47 | 显示全部楼层 |阅读模式
本帖最后由 flyself 于 2015-11-1 19:21 编辑

我用C/C++写了控制台程序,如何通过Au3来向控制台程序输入数据和读取控制台程序输出的数据,我尝试用stdinWrite和stdoutRead都不能实现数据的传输。请问有没有其他办法来实现?

问题已解决,方法在5楼
发表于 2015-10-31 18:48:34 | 显示全部楼层
UDP传输如何?
 楼主| 发表于 2015-10-31 20:36:04 | 显示全部楼层
回复 2# FluxayX


    UDP怎么操作呢,这个不是网络数据传输的吗,程序间的数据交互也行吗?
发表于 2015-11-1 11:55:22 | 显示全部楼层
回复 3# flyself


用本地址 127.0.0.1 传输就行了.
 楼主| 发表于 2015-11-1 19:19:06 | 显示全部楼层
自己解决了,现在把代码贴出来,希望能帮到有需要的人,使用这个方法也能与java写的class文件或者jar文件交互
#include <Array.au3>

_ArrayDisplay(_InterChangeExe("Test.exe"))

Func _InterChangeExe($sConsoleProgram, $nData = "")
        Local $PID = Run($sConsoleProgram, "", @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
        StdinWrite($PID, $nData & @CRLF)
        ProcessWaitClose($PID)

        Local $sPut = StdoutRead($PID)
        If @error <> 0 Then
                MsgBox(48, "ERROR", "未获取到数据,请检查" & $sConsoleProgram & "文件是否存在!")
                Return SetError(1, 0, 0)
        Else
                Local $aPuts = StringSplit(StringTrimRight($sPut, StringLen(@CRLF)), @CRLF)
                
                For $i = 1 To UBound($aPuts, 1) - 1
                        If $i < UBound($aPuts) And $aPuts[$i] = "" Then
                                _ArrayDelete($aPuts, $i)
                        EndIf
                Next
                $aPuts[0] = UBound($aPuts, 1) - 1
                Return $aPuts
        EndIf
EndFunc   ;==>_InterChangeExe
发表于 2015-11-10 13:24:02 | 显示全部楼层
回复 1# flyself


    你好,请问这个帖子的问题你可以解决吗?

http://www.autoitx.com/forum.php ... id=50325&extra=
 楼主| 发表于 2015-11-10 18:31:37 | 显示全部楼层
回复 6# 东风烈烈


    我试试吧,以前也没接触过这样的啊
发表于 2015-11-10 20:05:34 | 显示全部楼层
回复 7# flyself


    谢谢,非常期待。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-29 12:55 , Processed in 0.078954 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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